#include <iostream>
#include <cstring>
#include <fstream>
using namespace std;
#define Nmax 105
#define romeo 1
#define julieta -2
ifstream fin("rj.in");
ofstream fout("rj.out");
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={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'){
ir=i;jr=j+1;
a[ir][jr]=romeo;
}
if(x[j]=='J'){
ij=i;jj=j+1;
a[ij][jj]=0;
}
}
}
}
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 xi, int yi, int n, int m)
{
int cx[21000],cy[21000],pi,ps,k,ii,jj;
cx[0]=xi;
cy[0]=yi;
pi=0;
ps=0;
while(pi<=ps)
{
for(k=0;k<8;k++)
{
ii=cx[pi]+dx[k];
jj=cy[pi]+dy[k];
if(bune(ii,jj,n,m)==1)
if(a[ii][jj]==0)
{
a[ii][jj]=a[cx[pi]][cy[pi]]+1;
ps++;
cx[ps]=ii;
cy[ps]=jj;
}
}
pi++;
}
}
void afisare_mijloc(int a[][Nmax], int n, int m, int ij, int jj, int mij)
{
int cx[21000],cy[21000],pi,ps,k,i,j;
cx[0]=ij;
cy[0]=jj;
pi=0;
ps=0;
while( pi<=ps)
{
for(k=7;k>=0;k--)
{
i=cx[pi]+dx[k];
j=cy[pi]+dy[k];
if(bune(i,j,n,m)==1 && a[i][j]!=-1 && a[i][j]<a[cx[pi]][cy[pi]] && i!=j)
{
if(mij==a[i][j])
{
fout<<mij<<" "<<i<<" "<<j;
}
ps++;
cx[ps]=i;
cy[ps]=j;
}
}
pi++;
}
}
int main()
{
int n,m, a[Nmax][Nmax],ir,jr,ij,jj,mij;
citire(n,m,a,ir,jr,ij,jj);
lee(a,ir,jr,n,m);
/* for(i=1;i<=n;i++){
for(j=1;j<=m;j++)
cout<<a[i][j]<<"\t";
cout<<endl;
}
*/
mij=a[ij][jj]/2+1;
// cout<<mij;
afisare_mijloc(a,n,m,ij,jj,mij);
return 0;
}