#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;
ifstream f("rj.in");
ofstream g("rj.out");
int i,j,a[102][102],n,m,rc,rl,jc,jl,ll,cc,c,l,Min,dx[]={0,0,1,0,-1,1,-1,-1,1},dy[]={0,1,0,-1,0,1,1,-1,-1},viz[102][102],q[2][10001],viz1[102][102];
char x[102];
int coada(){
int p,u,k,l,c;
p=1;u=2;
while(p<=u){
for(int i=1;i<=8;i++){
l=q[0][p]+dx[i];
c=q[1][p]+dy[i];
if(a[l][c]==0 && viz[l][c]==10002 ){
u++;
q[0][u]=l;
q[1][u]=c;
viz[l][c]=viz[q[0][p]][q[1][p]]+1;
}
}
p++;
}
}
int main()
{f>>n>>m;
f.get();
for(i=1;i<=n;i++){
f.getline(x,102);
for(j=0;j<m;j++){
if(x[j]=='X')
a[i][j+1]=1;
else
if(x[j]==' ')
a[i][j+1]=0;
else
if(x[j]=='R'){
a[i][j+1]=2;
rl=i;
rc=j+1;}
if(x[j]=='J'){
a[i][j+1]=3;
jl=i;
jc=j+1;}}}
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]=1;
for(i=0;i<=m+1;i++)
a[0][i]=a[n+1][i]=1;
q[0][1]=rl;
q[1][1]=rc;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
viz[i][j]=10002;
viz[rl][rc]=1;
coada();
memset(a,0,sizeof(a));
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
viz1[i][j]=10002;
q[0][1]=jl;
q[1][1]=jc;
viz1[jl][jc]=1;
int p=1;int u=2;
while(p<=u){
for(int i=1;i<=8;i++){
l=q[0][p]+dx[i];
c=q[1][p]+dy[i];
if(a[l][c]==0 && viz1[l][c]==10002 ){
u++;
q[0][u]=l;
q[1][u]=c;
viz1[l][c]=viz1[q[0][p]][q[1][p]]+1;
}
}
p++;
}
Min=10001;
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(viz[i][j]==viz1[i][j]&&viz[i][j]!=10001&&viz[i][j]>=1){
Min=viz[i][j];
ll=i;
cc=j;}
g<<Min<<" "<<cc<<" "<<ll;
return 0;
}