#include <stdio.h>
#define fin "rj.in"
#define fout "rj.out"
#define dim 105
#define inf 32000
#define inf2 31000
FILE* in;
FILE* out;
int a[dim][dim],b[dim][dim],n,m,ir,jr,ij,jj;
const int vi[]={-1,-1,0,1,1,1,0,-1};
const int vj[]={0,1,1,1,0,-1,-1,-1};
void Read()
{
fscanf(in,"%i%i",&n,&m);
int i,j;
char c;
fscanf(in,"%c",&c);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
start:
fscanf(in,"%c",&c);
if(c=='\n')
goto start;
if(c=='X')
a[i][j]=inf2;
if(c=='R')
// coada[0][1]=i,coada[1][1]=j,b[i][j]=1;
ir=i,jr=j,b[i][j]=1;
if(c=='J')
// coada[0][2]=i,coada[1][2]=j,b[i][j]=1;
ij=i,jj=j,b[i][j]=1;
b[i][j]=inf;
}
for(j=0;j<=m+1;++j)
b[0][j]=inf,b[n+1][j]=inf;
for(i=0;i<=n+1;++i)
b[i][0]=inf,b[i][m+1]=inf;
}
int OK(int i,int j)
{
if(i<1 || i>n || j<1 || j>m) return 0;
if(b[i][j]!=inf) return 0;
if(a[i][j]==inf2) return 0;
return 1;
}
void lee()
{
int st,dr,im,jm,i,j,d;
int coada[2][dim*dim];
coada[0][1]=ir,coada[1][1]=jr;
coada[0][2]=ij,coada[1][2]=jj;
b[ir][jr]=1;
b[ij][jj]=-1;
st=1,dr=2;
while(st<=dr)
{
i=coada[0][st];
j=coada[1][st];
for(d=0;d<8;++d)
{
im=i+vi[d];
jm=j+vj[d];
if(b[im][jm]==-1*b[i][j]+1 || b[im][jm]==-1*b[i][j]-1) // Victory !!!
{fprintf(out,"%i %i %i\n",b[im][jm],im,jm);return ;}
if(OK(im,jm))
{
if(b[i][j]>=0)
b[im][jm]=b[i][j]+1;
else
b[im][jm]=b[i][j]-1;
dr++;
coada[0][dr]=im;
coada[1][dr]=jm;
}
}
st++;
}
fprintf(out,"cacat\n");
}
int main()
{
in = fopen (fin,"r");
out = fopen (fout,"w");
Read();
lee();
fclose(in);
fclose(out);
return 0;
}