#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
unsigned nums[1 << 11][1 << 11];
unsigned xored[1 << 11][1 << 11];
unsigned xoredr[1 << 11][1<<11];
unsigned r[1 << 11][1 << 11];
int main() {
    cin.tie(NULL);
    ios::sync_with_stdio(false);
    srand(time(0));
    int n;
    cin >> n;
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            cin >> nums[i][j];
            if (nums[i][j] == nums[i][j-1]) {
                //nums[i][j] ^= r[i][j-1];
                r[i][j] = r[i][j-1];
            } else if (nums[i][j] == nums[i-1][j]) {
                //nums[i][j] ^= r[i-1][j];
                r[i][j] = r[i-1][j];
            } else {
                r[i][j] = rand();
                //nums[i][j] ^= r[i][j];
            }
            //xored[i][j] = nums[i][j] ^ xored[i-1][j] ^ xored[i][j-1] ^ xored[i-1][j-1];
        }
    }
    for (int i = 1; i <= n; ++i) {
        for (int j = 1; j <= n; ++j) {
            //if (nums[i][j] == nums[i][j-1]) {
            //    nums[i][j] ^= r[i][j-1];
            //} else if (nums[i][j] == nums[i-1][j]) {
            //    nums[i][j] ^= r[i-1][j];
            //} else {
            //    r[i][j] = rand();
            //    nums[i][j] ^= r[i][j];
            //}
            nums[i][j] ^= r[i][j];
            xored[i][j] = nums[i][j] ^ xored[i-1][j] ^ xored[i][j-1] ^ xored[i-1][j-1];
            xoredr[j][i] = xored[i][j];
        }
    }
    int max = 0;
    int ansi, ansj;
    ansi = ansj = -1;
    for (int i = max+2; i < n; ++i) {
        for (int j = max+2; j < n; ++j) {
            if ((nums[i][j] == nums[i-1][j] && (nums[i][j-1]==nums[i-1][j-1] || nums[i][j-1]==nums[i][j-2])) ||
                (nums[i][j] == nums[i][j-1] && (nums[i-1][j]==nums[i-1][j-1] || nums[i-1][j]==nums[i-2][j]))) {
                //int k = i - 1;
                //if (k > j - 1) k = j-1;
                //if (k >= n) k = n-1;
                int big = i;
                if (j < big) big = j;
                for (int k = max+2; k < big; k+=2) {
                //for (; k >= max+2; k-=2) {
                    unsigned temp = xored[i][j] ^ xoredr[j][i-k] ^ xored[i][j-k] ^ xored[i-k][j-k];
                    //cout << i << ' ' << j << ' ' << k << ' ' << temp << endl;
                    if (temp == 0) {
                        ansi = i - k;
                        ansj = j - k;
                        max = k;
                    }
                }
            }
        }
    }
    cout << max << ' ' << ansi + 1 << ' ' << ansj + 1<< endl;
    return 0;
}
