#include <fstream>
using namespace std;
ofstream out("rj.out");
void citire (int &n, int &m, int mat[][100], int &xr, int &yr, int &xj, int &yj)
{
int i,j;
char sir[101];
ifstream in("rj.in");
in>>n>>m;
in.get();
for(i=0;i<n;i++)
{
in.getline(sir,101,'\n');
for(j=0;j<m;j++)
{
mat[i][j]=0;
if(sir[j]=='X') mat[i][j]=1;
if(sir[j]=='R') {xr=i; yr=j;}
if(sir[j]=='J') {xj=i; yj=j;}
}
}
in.close();
}
int bune(int ii, int jj, int n, int m)
{
return (ii>=0 and ii<n and jj>=0 and jj<m);
}
void rj(int n, int m, int mat[][100], int x, int y)
{
int k, cx[10000], cy[10000], ii, jj, pi, ps, pas;
int dx[]={-1,-1,0,1,1,1,0,-1};
int dy[]={0,1,1,1,0,-1,-1,-1};
mat[x][y]=1;
cx[0]=x;
cy[0]=y;
pi=0;
ps=0;
while(pi<=ps)
{
x=cx[pi];
y=cy[pi];
for(k=0;k<8;k++)
{
ii=x+dx[k];
jj=y+dy[k];
if(bune(ii,jj,n,m))
{
pas=mat[x][y]+1;
if(mat[ii][jj]==0 or mat[ii][jj]>pas)
{
mat[ii][jj]=pas;
ps++;
cx[ps]=ii;
cy[ps]=jj;
}
}
}
pi++;
}
}
int main()
{
int n,m,mat[100][100],xr,yr,xj,yj,i,j,x,y,mx;
char sir[101];
citire(n,m,mat,xr,yr,xj,yj);
rj(n,m,mat,xr,yr);
rj(n,m,mat,xj,yj);
mx=0;
for(i=0;i<n;i++)
{
for(j=0;j<m;j++)
{
//out<<mat[i][j]<<" ";
if(mat[i][j]>mx)
{
mx=mat[i][j];
x=i;
y=j;
}
}
//out<<endl;
}
out<<mx<<" "<<x+1<<" "<<y+1;
out.close();
return 0;
}