#include<iostream>
#include<fstream>
using namespace std;
#define INFINIT 99999
ifstream f("rj.in");
ofstream g("rj.out");
struct Pozitie{int lin,col;}pr,pj,p,v;
Pozitie C[111*111];
int rom[111][111];
int jul[111][111];
void lee(Pozitie ps,int a[111][111])
{
int prim=0,ultim=0;
a[ps.lin][ps.col] = 1;
C[0] = ps;
int dl[]={0, 1, 0, -1, -1, 1, -1, 1};
int dc[]={1, 0, -1, 0, -1, 1, 1,-1};
while(prim <= ultim)
{
p = C[prim]; prim++;
for(int i=0; i<8; i++)
{
v.lin = p.lin + dl[i];
v.col = p.col + dc[i];
if(a[v.lin][v.col] == 0)
{
a[v.lin][v.col] = a[p.lin][p.col] + 1;
ultim++;
C[ultim] = v;
}
}
}
}
void bordare(int n,int m,int a[111][111])
{
for(int i=0; i<=n+1; i++)
a[i][0] = -1,a[i][m+1] = -1;
for(int i=0; i<=m+1; i++)
a[0][i] = -1,a[n+1][i] = -1;
}
void rezolvare(int a[111][111],int b[111][111],int n,int m)
{
int i,j,tmin=INFINIT,xmin,ymin;
for(i=1; i<=n; i++)
for(j=1; j<=m; j++)
if(a[i][j] == b[i][j] && a[i][j] != -1 && a[i][j] != 0)
if(a[i][j] < tmin)
tmin = a[i][j],xmin = i,ymin = j;
g<<tmin<<" "<<xmin<<" "<<ymin;
}
int main()
{
int i,j,n,m;
char a[111];
f>>n>>m;
for(i=1; i<=n; i++)
{
f.ignore();
f.get(a,111);
for(j=1; j<=m; j++)
{
if(a[j-1] == ' ')
rom[i][j] = 0,jul[i][j] = 0;
else if(a[j-1] == 'X')
rom[i][j] = -1,jul[i][j] = -1;
else if(a[j-1] == 'R')
{
rom[i][j] = 0;
jul[i][j] = 0;
pr.lin = i;
pr.col = j;
}
else
{
rom[i][j] = 0;
jul[i][j] = 0;
pj.lin = i;
pj.col = j;
}
}
}
bordare(n,m,rom);
bordare(n,m,jul);
lee(pr,rom);
lee(pj,jul);
rezolvare(rom,jul,n,m);
f.close();
g.close();
return 0;
}