#include<iostream>
//#include<fstream>
#define in cin
#define out cout
using namespace std;
//ifstream in("test.in");
//ofstream out("test.out");
const int Nmax = 2001;
int a[Nmax][Nmax];
int A[4][Nmax][Nmax];
int N;
int ok(int x,int y,int s){
    int X=x+s-1;
    int Y=y+s-1;
    int z[5];
    z[0] = A[0][x][Y]-A[0][x][y-1];
    z[1] = A[1][X][Y]-A[1][X][y-1];
    z[2] = A[2][X][y]-A[2][x-1][y];
    z[3] = A[3][X][Y]-A[3][x-1][Y];
    z[4]=z[0]+z[1]+z[2]+z[3];
    return (z[4]==0);
}
int check(int S){
    for(int i=2;i<=N-1-S+1;i++){
        for(int j=2;j<=N-1-S+1;j++){
            if(ok(i,j,S)){
                return 1;
            }
        }
    }
    return 0;
}
int bins(){
    int i=0,pas=1<<14;
    while(pas>1){
        if(i+pas<=N-2 && check(i+pas)) i+=pas;
        pas>>=1;
    }
    return i;
}
int main(){
    in>>N;
    for(int i=1;i<=N;i++){
        for(int j=1;j<=N;j++){
            in>>a[i][j];
        }
    }
    for(int i=2;i<=N-1;i++){
        for(int j=2;j<=N-1;j++){
            if(a[i-1][j]==a[i][j]) A[0][i][j]=1;
            if(a[i+1][j]==a[i][j]) A[1][i][j]=1;
            if(a[i][j]==a[i][j-1]) A[2][i][j]=1;
            if(a[i][j]==a[i][j+1]) A[3][i][j]=1;
        }
    }
    for(int i=2;i<=N-1;i++){
        for(int j=2;j<=N-1;j++){
            A[0][i][j]+=A[0][i][j-1];
            A[1][i][j]+=A[1][i][j-1];
            A[2][i][j]+=A[2][i-1][j];
            A[3][i][j]+=A[3][i-1][j];
        }
    }
    /*for(int k=0;k<4;k++){
        for(int i=1;i<=N;i++){
            for(int j=1;j<=N;j++){
                out<<A[k][i][j]<<' ';
            }
            out<<'\n';
        }
        out<<'\n';
    }*/
    int sol=bins();
    for(int i=2;i<=N-1-sol+1;i++){
        for(int j=2;j<=N-1-sol+1;j++){
            if(ok(i,j,sol)){
                out<<sol<<' '<<i<<' '<<j<<'\n';
                return 0;
            }
        }
    }
    return 0;
}
