#include <fstream>
using namespace std;
ifstream fi("rj.in");
ofstream fo("rj.out");
struct cod {
int x , y ;
};
int n , m , MIN=2000000000 , MINx , MINy;
int r[102][102] , j[102][102];
cod coada[10000];
void move(int a[102][102] , int x1 , int y1 , int xx , int yy,int &j){
if(!a[x1][y1]||a[xx][yy]+1<a[x1][y1]) {
if(a[xx][yy]==-1) {
a[x1][y1]=1;
} else a[x1][y1]=a[xx][yy]+1;
coada[++j].x=x1;
coada[j].y=y1;
}
}
void fill(cod x , int a[102][102]) {
coada[0]=x;
int i=0,j=0;
while(coada[i++].x) {
int x = coada[i-1].x , y = coada[i-1].y ;
move(a,x,y+1,x,y,j);
move(a,x+1,y+1,x,y,j);
move(a,x-1,y+1,x,y,j);
move(a,x-1,y-1,x,y,j);
move(a,x+1,y-1,x,y,j);
move(a,x,y-1,x,y,j);
move(a,x+1,y,x,y,j);
move(a,x-1,y,x,y,j);
}
}
int main() {
cod R , J;
string line;
fi>>n>>m;
getline(fi,line);
for(int i=1; i<=n; i++) {
getline(fi,line);
for(int l=1; l<=m; l++) {
if(line[l-1]=='R') {
r[i][l]=-1;
j[i][l]=-1;
R.x=i;
R.y=l;
}
if(line[l-1]=='J') {
r[i][l]=-1;
j[i][l]=-1;
J.x=i;
J.y=l;
}
if(line[l-1]=='X') {
r[i][l]=-1;
j[i][l]=-1;
}
}
}
for(int i=0; i<=m+1; i++) {
r[i][0]=-1;
r[i][m+1]=-1;
j[i][0]=-1;
j[i][m+1]=-1;
}
for(int i=0; i<=n+1; i++) {
r[0][i]=-1;
r[n+1][i]=-1;
j[0][i]=-1;
j[n+1][i]=-1;
}
fill(R , r);
fill(J , j);
for(int i=1; i<=n; i++)
for(int l=1; l<=m; l++)
if(r[i][l]==j[i][l]&&r[i][l]>0&&r[i][l]<MIN){
MIN=r[i][l];
MINx=i;
MINy=l;
}
fo<<MIN+1<<" "<<MINx<<" "<<MINy;
}