#include <stdio.h>
#include <stdlib.h>
long i,j,n,m,rx,ry,jx,jy;
char c;
short a [1000][1000];
int rom[1000][1000],jul[1000][1000];
int cx[8] = {0,0,-1,1,1,-1,1,-1};
int cy[8] = {1,-1,0,0,1,-1,-1,1};
typedef struct nod{
int x,y,l;
nod* kov;
} *lista, elem;
int add(lista &vege,int x1, int y1, int le)
{
lista p = new elem;
p->x=x1;
p->y=y1;
p->l=le;
p->kov=NULL;
vege->kov=p;
vege=p;
return 0;
}
int bejarrom(int kx,int ky)
{
lista el = new elem;
el->x=kx;
el->y=ky;
el->l=0;
el->kov=NULL;
lista ve = el;
rom[kx][ky]=1;
int ux,uy;
while(el!=NULL){
for(i=0;i<=7;++i){
ux=el->x+cx[i];
uy=el->y+cy[i];
if(ux>=1&&ux<=n&&uy>=1&&uy<=m){
if(rom[ux][uy]==0&&a[ux][uy]==0){
add(ve,ux,uy,el->l+1);
rom[ux][uy]=el->l+1;
}
}
}
el=el->kov;
}
return 0;
}
int bejarjul(int kx,int ky)
{
lista el = new elem;
el->x=kx;
el->y=ky;
el->l=0;
el->kov=NULL;
lista ve = el;
jul[kx][ky]=1;
int ux,uy;
while(el!=NULL){
for(i=0;i<=7;++i){
ux=el->x+cx[i];
uy=el->y+cy[i];
if(ux>=1&&ux<=n&&uy>=1&&uy<=m){
if(jul[ux][uy]==0&&a[ux][uy]==0){
add(ve,ux,uy,el->l+1);
jul[ux][uy]=el->l+1;
}
}
}
el=el->kov;
}
return 0;
}
int main()
{
freopen("rj.in","r",stdin);
freopen("rj.out","w",stdout);
scanf("%ld %ld\n",&n,&m);
for(i=1;i<=n;++i)
{
for(j=1;j<=m;++j){
scanf("%c",&c);
if(c=='R'){
rx=i;
ry=j;
} else
if(c=='J'){
jx=i;
jy=j;
} else
if(c=='X'){
a[i][j]=1;
} else
{ a[i][j]=0; }
}
scanf("\n");
}
bejarrom(rx,ry);
bejarjul(jx,jy);
for(i=1;i<=n;++i)
for(j=1;j<=m;++j)
if(rom[i][j]==jul[i][j]&&rom[i][j]!=0)
{
printf("%ld %ld %ld",rom[i][j],i,j);
exit(1);
}
return 0;
}