#include<cstdio>
using namespace std;
#define MAX 150
short n,m,i,j,mat[MAX][MAX],xr,yr,xj,yj,x,y,p,u,u1,xnou,ynou,d,sol;
short dx[]={0, 0,1, 1,1,-1,-1,-1};
short dy[]={1,-1,0,-1,1, 0, 1,-1};
char c[MAX];
struct romjul{
short r,j;
} q[MAX*MAX][2],RJ[MAX][MAX];
void Lee(){
q[0][0].r=xr;q[0][1].r=yr;
q[0][0].j=xj;q[0][1].j=yj;
for(p=0,u=0,u1=0;p<=u || p<=u1;p++){
x=q[p][0].r;y=q[p][1].r;
for(d=0;d<8;d++){
xnou=x+dx[d];
ynou=y+dy[d];
if(!mat[xnou][ynou] && !RJ[xnou][ynou].r && xnou>=0 && ynou>=0 && xnou<n && ynou<m){
RJ[xnou][ynou].r=RJ[x][y].r+1;
q[++u][0].r=xnou;
q[u][1].r=ynou;
}
}
x=q[p][0].j;y=q[p][1].j;
for(d=0;d<8;d++){
xnou=x+dx[d];
ynou=y+dy[d];
if(!mat[xnou][ynou] && !RJ[xnou][ynou].j && xnou>=0 && ynou>=0 && xnou<n && ynou<m){
RJ[xnou][ynou].j=RJ[x][y].j+1;
q[++u1][0].j=xnou;
q[u1][1].j=ynou;
}
}
}
}
int main(){
FILE * pFile;
pFile=fopen("rj.in","r");
fscanf(pFile,"%d%d\n",&n,&m);
for(i=0;i<n;i++){
fgets (c,150,pFile);
for(j=0;j<m;j++){
if(c[j]==' ')mat[i][j]=0;
if(c[j]=='X')mat[i][j]=-1;
if(c[j]=='R'){xr=i;yr=j;mat[i][j]=1;}
if(c[j]=='J'){xj=i;yj=j;mat[i][j]=1;}
}
}
Lee();
pFile=fopen("rj.out","w");
sol=m*n+10;
xr=1;yr=1;
for(i=0;i<=n;i++){
for(j=0;j<=m;j++){
if(RJ[i][j].r==RJ[i][j].j && RJ[i][j].r && RJ[i][j].j && sol>RJ[i][j].r){
sol=RJ[i][j].r;xr=i;yr=j;}
}
}
fprintf(pFile,"%d %d %d",sol+1,xr+1,yr+1);
return 0;
}