#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
#define Nmax 101
#define romeo 1000
#define julieta 2000
ifstream fin("rj.in");
ofstream fout("rj.out");
const int ci[]={-1,-1,0,1,1,1,0,-1};
const int cj[]={0,1,1,1,0,-1,-1,-1};
void citire(int &n,int &m ,int a[][Nmax],int &ir, int &jr, int &ij, int &jj)
{
int i,j;
char x[Nmax];
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.getline(x,101,'\n');
for(j=0;j<m;j++)
{
if(x[j]==' ')
a[i][j+1]=0;
if(x[j]=='X')
a[i][j+1]=-1;
if(x[j]=='R'){
a[i][j+1]=romeo;ir=i;jr=j+1;}
if(x[j]=='J'){
a[i][j+1]=julieta;ij=i;jj=j+1;}
}
}
}
inline bool bune(int i, int j, int n, int m)
{
if(i>0 && i<=n && j>0 && j<=m)
return 1;
return 0;
}
void lee(int a[][Nmax],int i, int j, int x, int n, int m)
{
int k;
if(bune(i,j,n,m)==0)
return;
if(a[i][j]==-1)
return;
if(a[i][j]==0 || a[i][j]>x)
a[i][j]=x;
else
return;
for(k=0;k<=7;k++)
lee(a,i+ci[k],j+cj[k],x+1,n,m);
}
int main()
{
int n,m, a[Nmax][Nmax],ir,jr,ij,jj,i,j,x,b[Nmax][Nmax];
citire(n,m,a,ir,jr,ij,jj);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
b[i][j]=a[i][j];
lee(a,ir,jr,1,n,m);
lee(b,ij,jj,1,n,m);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(a[i][j]==b[i][j] && a[i][j]>=1)
fout<<a[i][j]<<" "<<i<<" "<<j<<"\n";
return 0;
}