#include<stdio.h>
FILE *f,*g;
int n,m,a[150][150],min=0, d=1;
int dx[]={1,1,0,-1,-1,-1,0,1},dy[]={0,-1,-1,-1,0,1,1,1};
typedef struct poz
{
int x,y;
};
poz vec[100023],ju,ro;
void back(int r, int e, int h)
{
register int i;
for(i=0;i<8;i++)
{
if(r+dx[i]== ju.x && e+dy[i]==ju.y)
{
if((a[r][e]+1)%2!=0)
{
min=a[r][e]+1;
a[r+dx[i]][e+dy[i]]=a[r][e]+1;
return;
}
}
else if(r+dx[i]>0 && r+dx[i]<n+1 && e+dy[i]>0 && e+dy[i]<n+1 && a[r+dx[i]][e+dy[i]]==0)
{
vec[d].x=r+dx[i];
vec[d].y=e+dy[i];
a[vec[d].x][vec[d].y]=a[r][e]+1;
d++;
}
}
if(min!=0)
return;
else
back(vec[h+1].x,vec[h+1].y,h+1);
}
int main()
{
f=fopen("rj.in","r");
g=fopen("rj.out","w");
register int i,j,k;
fscanf(f,"%d%d",&n,&m);
char ac;
while(ac!='\n')
fscanf(f,"%c",&ac);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
{
fscanf(f,"%c",&ac);
if(ac=='\n')
--j;
else if(ac=='J')
{
ju.x=i;
ju.y=j;
a[i][j]=-3;
}
else if(ac=='R')
{
ro.x=i;
ro.y=j;
a[i][j]=1;
}
else if(ac=='X')
a[i][j]=-1;
}
vec[0].x=ro.x;
vec[0].y=ro.y;
back(ro.x,ro.y,0);
fprintf(g,"%d ",min/2+1);
i=ju.x;
j=ju.y;
while(a[i][j]>min/2+1)
{
for(k=0;k<8;++k)
if(a[i+dx[k]][j+dy[k]]==a[i][j]-1)
{
i=i+dx[k];
j=j+dy[k];
if(a[i][j]==min/2+1)
k=8;
}
}
fprintf(g,"%d %d",i,j);
}