#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("rj.in");
ofstream fout("rj.out");
int n, m, iRo, jRo, iJu, jJu;
int ro[102][102], ju[102][102];
char ch;
bool found;
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 && !found; i++) {
for (int j = 1; j <= m && !found; j++) {
if (ro[i][j] == ju[i][j] && ro[i][j] > 0) {
found = true;
fout << ro[i][j] << ' ' << i << ' ' << j;
}
}
}
return 0;
}