#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
#define Nmax 101
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 a[][Nmax], int &n, int &m, int &xr, int&yr, int &xj, int &yj)
{
int i,j;
char s[Nmax];
fin>>n>>m;
fin.get();
for(i=1;i<=n;i++)
{
fin.getline(s,Nmax,'\n');
for(j=0;j<m;j++)
{
if(s[j]==' ')
a[i][j+1]=0;
if(s[j]=='X')
a[i][j+1]=-1;
if(s[j]=='R')
{
xr=i; yr=j+1;
a[i][j+1]=0;
}
if(s[j]=='J')
{
xj=i; yj=j+1;
a[i][j+1]=0;
}
}
}
}
void afisare(int a[][Nmax], int n, int m)
{
for(int i=1;i<=n;i++)
{
for(int j=1;j<=m;j++)
cout<<a[i][j]<<" ";
cout<<endl;
}
}
inline bool bune(int i, int j, int n, int m, int a[][Nmax])
{
if(i>0 && i<=n && j<=m && j>0)
if(a[i][j]==0)
return 1;
return 0;
}
void lee(int a[][Nmax], int n, int m, int xi, int yi)
{
int cx[Nmax*Nmax],cy[Nmax*Nmax],pi,ps,k,i,j;
cx[0]=xi;
cy[0]=yi;
pi=0;
ps=0;
while(pi<=ps)
{
for(k=0;k<8;k++)
{
i=cx[pi]+dx[k];
j=cy[pi]+dy[k];
if(bune(i,j,n,m,a)==1)
{
a[i][j]=a[cx[pi]][cy[pi]]+1;
ps++;
cx[ps]=i;
cy[ps]=j;
}
}
pi++;
}
}
int main()
{
int a[Nmax][Nmax],n,m,xr,yr,xj,yj,b[Nmax][Nmax],i,j,mij;
citire(a,n,m,xr,yr,xj,yj);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
b[i][j]=a[i][j];
a[xr][yr]=1;
b[xj][yj]=1;
lee(a,n,m,xr,yr);
lee(b,n,m,xj,yj);
afisare(a,n,m);
cout<<endl;
afisare(b,n,m);
if(a[xj][yj]%2==1)
mij=a[xj][yj]/2+1;
else
mij=a[xj][yj]/2;
for( i=1;i<=n;i++)
for( j=1;j<=m;j++)
if(a[i][j]==mij && b[i][j]==mij)
fout<<a[i][j]<<" "<<i<<" "<<j;
cout<<endl<<xr<<" "<<yr<<" "<<xj<<" "<<yj;
return 0;
}