#include<stdio.h>
#include<stdlib.h>
using namespace std;
#define dim 102
#define dim2 10002
int n,m,i,j,x1,x2,y1,y2,mat[dim][dim],t,x,y,yy,a[dim2],b[dim2],c[dim2],d[dim2];
int dir1[9]={0,-1,-1,0,1,1,1,0,-1};
int dir2[9]={0,0,1,1,1,0,-1,-1,-1};
char cc,mat2[dim][dim];
int main()
{
FILE *f=fopen("rj.in","r"), *g=fopen("rj.out","w");
fscanf(f,"%d%d\n",&n,&m);
for(i=1;i<=n;i++)
{for(j=1;j<=m;j++)
{fscanf(f,"%c",&cc);
if(cc=='R') {x1=i;y1=j;}
if(cc=='J') {x2=i;y2=j;}
if(cc=='X') mat[i][j]=-1;
}
fscanf(f,"\n");
}
t=2;
x=1; y=1;yy=1;
mat[x1][y1]=-1;
mat[x2][y2]=-1;
a[1]=x1; c[1]=x2;
b[1]=y1; d[1]=y2;
int ok=1,s,ss,e,ee;
while(ok)
{
//romeo
s=x; ss=y; e=x;
while(s<=ss)
{
for(i=1;i<=8;i++)
if(mat2[ x1+ dir1[i] ][ y1 + dir2[i] ]=='j')
{
fprintf(g,"%d %d %d\n",t,x1+dir1[i],y1 + dir2[i]); exit(0);
//g<<x1+dir1[i]<<" "<<y1 + dir2[i]<<"\n"<<t<<"\n";
}
else
{
if(mat[ x1+ dir1[i] ][ y1+ dir2[i]]==0)
if(( x1+ dir1[i] <=n)&&( y1+ dir2[i] <=m)&&( x1+ dir1[i] >0)&&( y1+ dir2[i] >0) )
{
mat[ x1+ dir1[i] ][ y1+ dir2[i]]=t;
mat2[ x1+ dir1[i] ][ y1+ dir2[i]]='r';
a[++y]=x1+ dir1[i];
b[y]=y1+ dir2[i];
}
}
s++;
x1=a[s]; y1=b[x];
}
//juieta
ee=yy;
while(e<=ee)
{
for(i=1;i<=8;i++)
if(mat2[ x2+ dir1[i] ][ y2 + dir2[i] ]=='r')
{
fprintf(g,"%d %d %d\n",t,x2+dir1[i],y2 + dir2[i]); exit(0);
//g<<x2+ dir1[i]<<" "<<y2 + dir2[i]<<"\n"<<t<<"\n";
}
else
{
if(mat[ x2+ dir1[i] ][ y2+ dir2[i]]==0)
if(( x2+ dir1[i] <=n)&&( y2+ dir2[i] <=m)&&( x2+ dir1[i] >0)&&( y2+ dir2[i] >0) )
{
mat[ x2+ dir1[i] ][ y2+ dir2[i]]=t;
mat2[ x2+ dir1[i] ][ y2+ dir2[i]]='j';
c[++yy]=x2+ dir1[i];
d[yy]=y2+ dir2[i];
}
}
e++;
x2=c[e]; y2=d[e];
}
t++;
}
fclose(f);
fclose(g);
return 0;}