#include <stdio.h>
#include <queue>
using namespace std;
FILE*f=fopen("rj.in","r");
FILE*g=fopen("rj.out","w");
int di[]={-1,-1,0,1,1,1,0,-1};
int dj[]={0,1,1,1,0,-1,-1,-1};
int n,m,rjm1[110][110],rjm2[110][110],xr,yr,xj,yj;
queue<pair<int,int> >rj1;
queue<pair<int,int> >rj2;
void citire()
{
fscanf(f,"%d%d",&n,&m);
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{
char c;
fscanf(f,"%c",&c);
if(c=='\n')
fscanf(f,"%c",&c);
if(c=='X')
rjm1[i][j]=-1,rjm2[i][j]=-1;
else
{
if(c=='R')
{
xr=i;
yr=j;
}
if(c=='J')
{
xj=i;
yj=j;
}
}
}
}
int ok1(int i,int j)
{
if(i<1||j<1||i>n||j>m)
return 0;
if(rjm1[i][j]==-1)
return 0;
return 1;
}
int ok2(int i,int j)
{
if(i<1||j<1||i>n||j>m)
return 0;
if(rjm2[i][j]==-1)
return 0;
return 1;
}
void r_j_1()
{
int i,j,iur,jur;
rjm1[xr][yr]=1;
rj1.push(make_pair(xr,yr));
while(!rj1.empty())
{
i=rj1.front().first;
j=rj1.front().second;
rj1.pop();
for(int d=0;d<8;d++)
{
iur=i+di[d];
jur=j+dj[d];
if(ok1(iur,jur)&&rjm1[iur][jur]<1)
{
rjm1[iur][jur]=rjm1[i][j]+1;
rj1.push(make_pair(iur,jur));
}
}
}
}
void r_j_2()
{
int i,j,iur,jur;
rjm2[xj][yj]=1;
rj2.push(make_pair(xj,yj));
while(!rj2.empty())
{
i=rj2.front().first;
j=rj2.front().second;
rj2.pop();
for(int d=0;d<8;d++)
{
iur=i+di[d];
jur=j+dj[d];
if(ok2(iur,jur)&&rjm2[iur][jur]<1)
{
rjm2[iur][jur]=rjm2[i][j]+1;
rj2.push(make_pair(iur,jur));
if(rjm2[iur][jur]==rjm1[iur][jur])
{
fprintf(g,"%d %d %d",iur,jur,rjm2[iur][jur]);
return;
}
}
}
}
}
int main()
{
citire();
r_j_1();
r_j_2();
//printf("%d",rjm[xj][yj]);
/*for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
if(rjm1[i][j]!=-1)
printf(" %d",rjm1[i][j]);
else
printf("%d",rjm1[i][j]);
printf("\n");
}
printf("\n");
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
if(rjm2[i][j]!=-1)
printf(" %d",rjm2[i][j]);
else
printf("%d",rjm2[i][j]);
printf("\n");
}*/
}