#include<stdio.h>

const int NMAX = 2005;

int i, j, ir, jr, w[NMAX][NMAX], di[] = {-1, 0 , 1, 0}, dj[] = {0, 1, 0, -1};

bool inBound (int x, int y) {
    return x >= i && x <= ir && y >= j && y <= jr;
}

bool ok() {
    int x, y, k, found;

    for(x = i; x <= ir; ++ x)
        for(y = j; y <= jr; ++ y) {
            found = 0;
            for(k = 0; k <= 3; ++ k)
                if(inBound(x + di[k], y + dj[k]) && w[x + di[k]][y + dj[k]] == w[x][y]) {
                    found = 1;
                    break;
                }
            if(!found)
                return 0;
        }
    return 1;
}

int main() {
   // freopen("window.in", "r", stdin);
   // freopen("window.out", "w", stdout);
    int dir, len, found, n;

    scanf("%d", &n);
    for(i = 1; i <= n; ++ i)
        for(j = 1; j <= n; ++ j)
            scanf("%d", &w[i][j]);

    for(len = n - 1; len > 1; -- len)
        for(i = 2; i <= n - len; ++ i)
            for(j = 2; j <= n - len; ++ j) {
                ir = i + len - 1;
                jr = j + len - 1;

                if(ok()) {
                    printf("%d %d %d\n", len, i, j);
                    return 0;
                }
            }

    return 0;
}
