#include <iostream>
#include <fstream>
#include <string.h>
using namespace std;
const int dx[]={-1,-1,-1,0,1,1,1,0};
const int dy[]={-1,0,1,1,1,0,-1,-1};
int n,m,a[101][101],xi,xf,yi,yf;
char s[101];
void citire(int &n, int &m, int &xi, int &yi, int &xf, int &yf)
{
int i,j;
ifstream f("rj.in");
f>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
a[i][j]=0;
f.get();
for( i=0;i<n;i++)
{
f.getline(s,101);
for( j=0;j<m;j++)
{
if(s[j]=='X')
a[i][j]=-1;
if(s[j]=='R')
{
a[i][j]=1;
xi=i;
yi=j;
}
if(s[j]=='J')
{
a[i][j]=0;
xf=i;
yf=j;
}
}
}
f.close();
}
int bune(int ii, int jj, int n, int m)
{
return(ii>=0 && ii<n) && (jj>=0 && jj<m);
}
void lee( int i, int j, int n,int m)
{
int cx[101*101], cy[101*101], k ,ii,jj,pi,ps;
cx[0]=i;
cy[0]=j;
a[i][j]=1;
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))
if(a[ii][jj]==0)
{
a[ii][jj]=a[cx[pi]][cy[pi]]+1;
ps++;
cx[ps]=ii;
cy[ps]=jj;
}
}
pi++;
}
}
void afisare(int n, int m)
{
ofstream g("rj.out");
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]==a[xf][yf]/2+1)
g<<a[xf][yf]/2+1<<" "<<i+1<<" "<<j+1;
}
}
g.close();
}
int main()
{
citire (n,m,xi,yi,xf,yf);
lee(xi,yi,n,m);
afisare (n,m);
return 0;
}