#include <bits/stdc++.h> // NeOWami
using namespace std;
#define ft first
#define sc second
using pii = pair<int, int>;
const int N = 2e3 + 5;
int n, m;
char c[N][N];
int a[N][N], ps[N][N];
int nok[N][N];
int Dx[] = {-1, 1, 0, 0};
int Dy[] = {0, 0, -1, 1};
inline int getRect(int x, int y, int u, int v) {
return ps[u][v] - ps[u][y - 1] - ps[x - 1][v] + ps[x - 1][y - 1];
}
inline int getNok(int x, int y, int u, int v) {
if (x > u || y > v) return 0;
return nok[u][v] - nok[u][y - 1] - nok[x - 1][v] + nok[x - 1][y - 1];
}
inline pii ID(int x, int y) {
return {x + y - 1, x - y + m};
}
inline pii RID(int A, int B) {
int x = (A + B + 1 - m);
if (x & 1) return {-1, -1};
x /= 2;
int y = A - x + 1;
if (x < 1 || x > n || y < 1 || y > m) return {-1, -1};
return {x, y};
}
signed main() {
cin.tie(NULL)->sync_with_stdio(false);
if(ifstream("RBULL.inp")) {
freopen("RBULL.inp", "r", stdin);
freopen("RBULL.out", "w", stdout);
}
cin >> n >> m;
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
cin >> c[i][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= m; j++) {
if (c[i][j] == '*') {
a[i + j - 1][i - j + m] = 1;
for (int mov = 0; mov < 4; mov++) {
int tx = i + Dx[mov], ty = j + Dy[mov];
if (!tx || !ty || tx >n || ty > m) continue;
if (c[tx][ty] == '*') nok[i + j - 1][i - j + m] = 1;
}
}
}
}
for (int i = 1; i < n + m; i++) {
for (int j = 1; j < n + m; j++) {
ps[i][j] = ps[i - 1][j] + ps[i][j - 1] - ps[i - 1][j - 1] + a[i][j];
nok[i][j] = nok[i - 1][j] + nok[i][j - 1] - nok[i - 1][j - 1] + nok[i][j];
}
}
int ans = 0, ansX = 1, ansY = 1, ansR = 0;
for (int i = 1; i < n + m; i++) {
for (int j = 1; j < n + m; j++) {
pii tmp = RID(i, j); int x = tmp.ft, y = tmp.sc;
if (x == -1) continue;
int lo = 1, hi = min({x - 1, m - y, y - 1, (x - 1) / 2}), ansm = 0;
// cerr << i << " " << j << " min = " << hi << "\n";
while(lo <= hi) {
int mid = lo + hi >> 1;
if (getNok(i - mid * 2 + 1, j - mid * 2 + 1, i - 1, j - 1)) {
hi = mid - 1;
}
else {
ansm = mid;
lo = mid + 1;
}
}
int val = getRect(i - ansm * 2, j - ansm * 2, i, j);
if (val > ans) {
ans = val;
ansR = ansm;
pii tmp = RID(i - ansm, j - ansm);
ansX = tmp.ft, ansY = tmp.sc;
// cerr << i << " " << j << " | " << x << " " << y << ": " << val << " -> " << ansm << " | " << ansX << " " << ansY << "\n";
}
}
}
if (ans == 0) return cout << "0 1 1 0", 0;
cout << ans << " " << ansX << " " << ansY << " " << ansR;
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+IC8vIE5lT1dhbWkKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgZnQgZmlyc3QKI2RlZmluZSBzYyBzZWNvbmQKdXNpbmcgcGlpID0gcGFpcjxpbnQsIGludD47CmNvbnN0IGludCBOID0gMmUzICsgNTsKaW50IG4sIG07CmNoYXIgY1tOXVtOXTsKCmludCBhW05dW05dLCBwc1tOXVtOXTsKaW50IG5va1tOXVtOXTsKaW50IER4W10gPSB7LTEsIDEsIDAsIDB9OwppbnQgRHlbXSA9IHswLCAwLCAtMSwgMX07CmlubGluZSBpbnQgZ2V0UmVjdChpbnQgeCwgaW50IHksIGludCB1LCBpbnQgdikgewogICAgcmV0dXJuIHBzW3VdW3ZdIC0gcHNbdV1beSAtIDFdIC0gcHNbeCAtIDFdW3ZdICsgcHNbeCAtIDFdW3kgLSAxXTsKfQppbmxpbmUgaW50IGdldE5vayhpbnQgeCwgaW50IHksIGludCB1LCBpbnQgdikgewogICAgaWYgKHggPiB1IHx8IHkgPiB2KSByZXR1cm4gMDsKICAgIHJldHVybiBub2tbdV1bdl0gLSBub2tbdV1beSAtIDFdIC0gbm9rW3ggLSAxXVt2XSArIG5va1t4IC0gMV1beSAtIDFdOwp9CgppbmxpbmUgcGlpIElEKGludCB4LCBpbnQgeSkgewogICAgcmV0dXJuIHt4ICsgeSAtIDEsIHggLSB5ICsgbX07Cn0KaW5saW5lIHBpaSBSSUQoaW50IEEsIGludCBCKSB7CiAgICBpbnQgeCA9IChBICsgQiArIDEgLSBtKTsKICAgIGlmICh4ICYgMSkgcmV0dXJuIHstMSwgLTF9OwogICAgeCAvPSAyOwogICAgaW50IHkgPSBBIC0geCArIDE7CiAgICBpZiAoeCA8IDEgfHwgeCA+IG4gfHwgeSA8IDEgfHwgeSA+IG0pIHJldHVybiB7LTEsIC0xfTsKICAgIHJldHVybiB7eCwgeX07Cn0KCnNpZ25lZCBtYWluKCkgewogICAgY2luLnRpZShOVUxMKS0+c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGlmKGlmc3RyZWFtKCJSQlVMTC5pbnAiKSkgewogICAgICAgIGZyZW9wZW4oIlJCVUxMLmlucCIsICJyIiwgc3RkaW4pOwogICAgICAgIGZyZW9wZW4oIlJCVUxMLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIH0KICAgIGNpbiA+PiBuID4+IG07CiAgICBmb3IgKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHsKICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8PSBtOyBqKyspIHsKICAgICAgICAgICAgY2luID4+IGNbaV1bal07CiAgICAgICAgfQogICAgfQogICAgZm9yIChpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPD0gbTsgaisrKSB7CiAgICAgICAgICAgIGlmIChjW2ldW2pdID09ICcqJykgewogICAgICAgICAgICAgICAgYVtpICsgaiAtIDFdW2kgLSBqICsgbV0gPSAxOwogICAgICAgICAgICAgICAgZm9yIChpbnQgbW92ID0gMDsgbW92IDwgNDsgbW92KyspIHsKICAgICAgICAgICAgICAgICAgICBpbnQgdHggPSBpICsgRHhbbW92XSwgdHkgPSBqICsgRHlbbW92XTsKICAgICAgICAgICAgICAgICAgICBpZiAoIXR4IHx8ICF0eSB8fCB0eCA+biB8fCB0eSA+IG0pIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgIGlmIChjW3R4XVt0eV0gPT0gJyonKSBub2tbaSArIGogLSAxXVtpIC0gaiArIG1dID0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbiArIG07IGkrKykgewogICAgICAgIGZvciAoaW50IGogPSAxOyBqIDwgbiArIG07IGorKykgewogICAgICAgICAgICBwc1tpXVtqXSA9IHBzW2kgLSAxXVtqXSArIHBzW2ldW2ogLSAxXSAtIHBzW2kgLSAxXVtqIC0gMV0gKyBhW2ldW2pdOwogICAgICAgICAgICBub2tbaV1bal0gPSBub2tbaSAtIDFdW2pdICsgbm9rW2ldW2ogLSAxXSAtIG5va1tpIC0gMV1baiAtIDFdICsgbm9rW2ldW2pdOwogICAgICAgIH0KICAgIH0KICAgIGludCBhbnMgPSAwLCBhbnNYID0gMSwgYW5zWSA9IDEsIGFuc1IgPSAwOwogICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuICsgbTsgaSsrKSB7CiAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPCBuICsgbTsgaisrKSB7CiAgICAgICAgICAgIHBpaSB0bXAgPSBSSUQoaSwgaik7IGludCB4ID0gdG1wLmZ0LCB5ID0gdG1wLnNjOwogICAgICAgICAgICBpZiAoeCA9PSAtMSkgY29udGludWU7CiAgICAgICAgICAgIGludCBsbyA9IDEsIGhpID0gbWluKHt4IC0gMSwgbSAtIHksIHkgLSAxLCAoeCAtIDEpIC8gMn0pLCBhbnNtID0gMDsKLy8gICAgICAgICAgICBjZXJyIDw8IGkgPDwgIiAiIDw8IGogPDwgIiBtaW4gPSAiIDw8IGhpIDw8ICJcbiI7CiAgICAgICAgICAgIHdoaWxlKGxvIDw9IGhpKSB7CiAgICAgICAgICAgICAgICBpbnQgbWlkID0gbG8gKyBoaSA+PiAxOwogICAgICAgICAgICAgICAgaWYgKGdldE5vayhpIC0gbWlkICogMiArIDEsIGogLSBtaWQgKiAyICsgMSwgaSAtIDEsIGogLSAxKSkgewogICAgICAgICAgICAgICAgICAgIGhpID0gbWlkIC0gMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGFuc20gID0gbWlkOwogICAgICAgICAgICAgICAgICAgIGxvID0gbWlkICsgMTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpbnQgdmFsID0gZ2V0UmVjdChpIC0gYW5zbSAqIDIsIGogLSBhbnNtICogMiwgaSwgaik7CiAgICAgICAgICAgIGlmICh2YWwgPiBhbnMpIHsKICAgICAgICAgICAgICAgIGFucyA9IHZhbDsKICAgICAgICAgICAgICAgIGFuc1IgPSBhbnNtOwogICAgICAgICAgICAgICAgcGlpIHRtcCA9IFJJRChpIC0gYW5zbSwgaiAtIGFuc20pOwogICAgICAgICAgICAgICAgYW5zWCA9IHRtcC5mdCwgYW5zWSA9IHRtcC5zYzsKLy8gICAgICAgICAgICAgICAgY2VyciA8PCBpIDw8ICIgIiA8PCBqIDw8ICIgfCAiIDw8IHggPDwgIiAiIDw8IHkgPDwgIjogIiA8PCB2YWwgPDwgIiAtPiAiIDw8IGFuc20gPDwgIiB8ICIgPDwgYW5zWCA8PCAiICIgPDwgYW5zWSA8PCAiXG4iOwogICAgICAgICAgICB9CgogICAgICAgIH0KICAgIH0KCiAgICBpZiAoYW5zID09IDApIHJldHVybiBjb3V0IDw8ICIwIDEgMSAwIiwgMDsKICAgIGNvdXQgPDwgYW5zIDw8ICIgIiA8PCBhbnNYIDw8ICIgIiA8PCBhbnNZIDw8ICIgIiA8PCBhbnNSOwoKICAgIHJldHVybiAwOwp9Cg==