#include <iostream>
//#include <fstream>

using namespace std;

//ifstream f ("date.in");

const int NMAX = 2000 + 1;

int n, sol, x, y;
int v[NMAX][NMAX], stanga[NMAX][NMAX], sus[NMAX][NMAX];

void scrie_matrice(int v[][NMAX]) {
    for (int i = 1; i <= n; i++) {
        for (int j = 1; j <= n; j++)
            cout << v[i][j] << ' ';
        cout << endl;
    }
}

inline int minim (int a, int b) {
    if (a < b) return a;
    return b;
}

void citeste() {
    cin >> n;
    int x;
    for (int j = 0; j < n; j++) cin >> v[0][1];
    for (int j = 0; j < n; j++) {
        cin >> v[1][j];
        if (v[1][j] == v[0][j]) v[1][j] = -1;
        else if (j > 1 && v[1][j] == v[1][j -1]) stanga[1][j] = stanga[1][j - 2] + 2;
    }
    if (v[1][1] == v[1][0]) v[1][1] = -1;
    if (v[1][n - 1] == v[1][n - 2]) v[1][n - 2] = -1;
    n--;
    for (int i = 2; i < n; i++) {
        cin >> x;
        cin >> v[i][1];
        if (v[i][1] == x) v[i][1] = -1;
        if (v[i - 1][1] == v[i][1] && v[i][1] != -1) sus[i][1] = sus[i - 2][1] + 2;
        for (int j = 2; j < n; j++) {
            cin >> v[i][j];
            if (v[i][j] == v[i - 1][j] && v[i - 1][j] != -1) sus[i][j] = sus[i - 2][j] + 2;
            if (v[i][j] == v[i][j - 1] && v[i][j - 1] != -1) stanga[i][j] = stanga[i][j - 2] + 2;
        }
        cin >> x;
        if (v[i][n - 1] == x) v[i][n - 1] = -1;
    }
    n--;
}

void rezolva() {
    int crt;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++) {
            if (stanga[i][j] != 0 && sus[i - 1][j] != 0) {
                crt = minim(stanga[i][j], sus[i - 1][j]);
                if (crt > sol) {
                    sol = crt;
                    x = i - sol + 1;
                    y = j - sol + 1;
                }
            }
        }

    cout << sol << ' ' << x << ' ' << y + 1 << '\n';
}

int main() {
    citeste();
    rezolva();
    return 0;
}
