#include <iostream>
#include <fstream>

using namespace std;


//#define HOME

const int MAX_N = 1000 + 1;

int m[MAX_N][MAX_N];

int n;


#ifdef HOME
ifstream in("input");
#define cin in
#endif // HOME

int len = 2;

bool two_by_two(int x, int y)
{
    if(x+1 > n || y+1 > n)
        return 0;

    if(m[x][y] == m[x+1][y])
        return m[x][y+1] == m[x+1][y+1];
    return m[x+1][y] == m[x+1][y+1];
}

const int dx[] = {0, 1, 0, -1};
const int dy[] = {1, 0, -1, 0};

bool fits(int x0, int y0, int x1, int y1, int a, int b) {
    return (x0 <= a && a <= x1) && (y0 <= b && b <= y1);
}

bool within(int x0, int y0, int x1, int y1){
    int i, j;

    if(x0 <= 1 || y0 <= 1 || x1 <= 1 || y1 <= 1)
        return 0;
    if(x0 >= n || y0 >= n || x1 >= n || y1 >= n)
        return 0;

    for(int i = x0 ; i <= x1 ; ++i) {
        for(int j = y0 ; j <= y1 ; ++j) {
            const int w = m[i][j];
            for(int k = 0 ; k < 4 ; ++k) {
                int _x = i + dx[k];
                int _y = j + dy[k];

                if(m[_x][_y] == w && !fits(x0,y0,x1,y1,_x,_y))
                    return 0;
            }
        }
    }
    return 1;
}


int x0[MAX_N * MAX_N / 2];
int y0[MAX_N * MAX_N / 2];
int sz;

int main()
{
    cin >> n;

    for(int i = 1 ; i <= n ; ++i)
        for(int j = 1 ; j <= n ; ++j)
            cin >> m[i][j];

    for(int i = 2 ; i < n ; ++i) {
        for(int j = 2 ; j < n ; ++j) {
            if(two_by_two(i, j)) {
                ++sz;
                x0[sz] = i;
                y0[sz] = j;
            }
        }
    }

    int sol = 0;
    int xx, yy;

    for(int i = 2 ; i < n ; ++i) {
        for(int j = 2 ; j < n ; ++j) {
            int k = 0;

            while(within(i, j, i + k + 1, j + k + 1))
                k += 2;

            if(k > sol) {
                sol = k;
                xx = i;
                yy = j;
            }
        }
    }

    cout << sol << " " << xx << " " << yy << "\n";
    return 0;
}
