#include<stdio.h>
#define N 102
#define M 102
FILE *f,*g;
const int dx[]={-1,-1,0,1,1,1,0,-1};
const int dy[]={0,1,1,1,0,-1,-1,-1};
int n,m,xr,yr,xj,yj,r[N][M],j[N][M];
char a[N][M];
void read()
{
f=fopen("rj.in","r");
int i,j;
char ch;
fscanf(f,"%d%d",&n,&m);
fscanf(f,"%c",&ch);
for(i=1;i<=n;i++)
{
fgets(a[i]+1,114,f);
for(j=1;j<=m;j++)
{
// scanf("%c",&ch);
// a[i][j]=ch;
if(a[i][j]=='R')
{
xr=i;
yr=j;
a[i][j]=' ';
}
if(a[i][j]=='J')
{
xj=i;
yj=j;
a[i][j]=' ';
}
}
//scanf("%c",&ch);
}
for(i=0;i<=n+1;i++)
a[i][0]=a[i][m+1]='X';
for(j=0;j<=m+1;j++)
a[0][j]=a[0][n+1]='X';
}
void bf(int x0,int y0,int d[N][M])
{
int x1,y1,x2,y2,k=0,i1,i,j;
struct vec
{
int x,y;
}c[N*M];
for(i=0;i<=n+1;i++)
for(j=0;j<=m+1;j++)
d[i][j]=-1;
c[k].x=x0;
c[k++].y=y0;
d[x0][y0]=1;
for(i1=0;i1<=k;i1++)
{
x1=c[i1].x;
y1=c[i1].y;
for(i=0;i<8;i++)
{
x2=x1+dx[i];
y2=y1+dy[i];
if(a[x2][y2]==' '&&d[x2][y2]==-1)
{
c[k].x=x2;
c[k++].y=y2;
d[x2][y2]=1+d[x1][y1];
}
}
}
}
void afis(char a[N][M])
{
int i,j;
for(i=1;i<=n;i++)
{
for(j=1;j<=m;j++)
fprintf(g,"%c",a[i][j]);
fprintf(g,"\n");
}
}
void afisare(int j[N][M])
{
g=fopen("rj.out","w");
int i,k,tmin,xf=xr,yf=yr;
tmin=N*N+5;
for(i=1;i<=n;i++)
for(k=1;k<=m;k++)
if(r[i][k]==j[i][k])
if(r[i][k]<tmin&&r[i][k]!=-1)
{
tmin=r[i][k];
xf=i;
yf=k;
}
fprintf(g,"%d %d %d\n",tmin,xf,yf);
}
int main()
{
read();
bf(xr,yr,r);
bf(xj,yj,j);
//afisare(r);
//printf("\n");
afisare(j);
//afis(a);
return 0;
}