#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, iRo, jRo, iJu, jJu, mini, minj, minim = 9999999, ror, juj;
int ro[102][102], ju[102][102];
char ch;
struct Loc {
int di, dj, valoare;
} c[10501];
void Adauga(int poz, int di, int dj, int valoare) {
c[poz].di = di;
c[poz].dj = dj;
c[poz].valoare = valoare;
}
void LeeRo() {
int in = 1, sf = 1, di, dj, valoare;
c[1].di = iRo;
c[1].dj = jRo;
c[1].valoare = 1;
ro[iRo][jRo] = 1;
while (in <= sf) {
di = c[in].di;
dj = c[in].dj;
valoare = c[in].valoare + 1;
if (ro[di - 1][dj] == 0) {
sf++;
Adauga(sf, di - 1, dj, valoare);
ro[di - 1][dj] = valoare;
}
if (ro[di - 1][dj + 1] == 0) {
sf++;
Adauga(sf, di - 1, dj + 1, valoare);
ro[di - 1][dj + 1] = valoare;
}
if (ro[di][dj + 1] == 0) {
sf++;
Adauga(sf, di, dj + 1, valoare);
ro[di][dj + 1] = valoare;
}
if (ro[di + 1][dj + 1] == 0) {
sf++;
Adauga(sf, di + 1, dj + 1, valoare);
ro[di + 1][dj + 1] = valoare;
}
if (ro[di + 1][dj] == 0) {
sf++;
Adauga(sf, di + 1, dj, valoare);
ro[di + 1][dj] = valoare;
}
if (ro[di + 1][dj - 1] == 0) {
sf++;
Adauga(sf, di + 1, dj - 1, valoare);
ro[di + 1][dj - 1] = valoare;
}
if (ro[di][dj - 1] == 0) {
sf++;
Adauga(sf, di, dj - 1, valoare);
ro[di][dj - 1] = valoare;
}
if (ro[di - 1][dj - 1] == 0) {
sf++;
Adauga(sf, di - 1, dj - 1, valoare);
ro[di - 1][dj - 1] = valoare;
}
in++;
}
}
void LeeJu() {
int in = 1, sf = 1, di, dj, valoare;
c[1].di = iJu;
c[1].dj = jJu;
c[1].valoare = 1;
ju[iJu][jJu] = 1;
while (in <= sf) {
di = c[in].di;
dj = c[in].dj;
valoare = c[in].valoare + 1;
if (ju[di - 1][dj] == 0) {
sf++;
Adauga(sf, di - 1, dj, valoare);
ju[di - 1][dj] = valoare;
}
if (ju[di - 1][dj + 1] == 0) {
sf++;
Adauga(sf, di - 1, dj + 1, valoare);
ju[di - 1][dj + 1] = valoare;
}
if (ju[di][dj + 1] == 0) {
sf++;
Adauga(sf, di, dj + 1, valoare);
ju[di][dj + 1] = valoare;
}
if (ju[di + 1][dj + 1] == 0) {
sf++;
Adauga(sf, di + 1, dj + 1, valoare);
ju[di + 1][dj + 1] = valoare;
}
if (ju[di + 1][dj] == 0) {
sf++;
Adauga(sf, di + 1, dj, valoare);
ju[di + 1][dj] = valoare;
}
if (ju[di + 1][dj - 1] == 0) {
sf++;
Adauga(sf, di + 1, dj - 1, valoare);
ju[di + 1][dj - 1] = valoare;
}
if (ju[di][dj - 1] == 0) {
sf++;
Adauga(sf, di, dj - 1, valoare);
ju[di][dj - 1] = valoare;
}
if (ju[di - 1][dj - 1] == 0) {
sf++;
Adauga(sf, di - 1, dj - 1, valoare);
ju[di - 1][dj - 1] = valoare;
}
in++;
}
}
int main() {
fin >> n >> m;
n++; m++;
for (int i = 0; i <= n; i++)
ro[i][0] = ro[i][m] = ju[i][0] = ju[i][m] = -1;
for (int j = 0; j <= m; j++)
ro[0][j] = ro[n][j] = ju[0][j] = ju[n][j] = -1;
n--; m--;
fin >> noskipws >> ch;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
fin >> noskipws >> ch;
if (ch == ' ') {
ro[i][j] = ju[i][j] = 0;
} else if (ch == 'X') {
ro[i][j] = ju[i][j] = -1;
} else if (ch == 'R') {
ro[i][j] = ju[i][j] = 0;
iRo = i;
jRo = j;
} else if (ch == 'J') {
ro[i][j] = ju[i][j] = 0;
iJu = i;
jJu = j;
}
}
fin >> noskipws >> ch;
}
LeeRo();
LeeJu();
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
ror = ro[i][j];
juj = ju[i][j];
if (ror < juj) {
if (juj < minim) {
minim = juj;
mini = i;
minj = j;
}
} else if (ror > juj) {
if (ror < minim) {
minim = ror;
mini = i;
minj = j;
}
} else if (ror == juj && ror > 0) {
if (ror < minim) {
minim = ror;
mini = i;
minj = j;
}
}
}
}
fout << minim << ' ' << mini << ' ' << minj;
return 0;
}