#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
struct part{
    int beg;
    int en;
};
int table[2048][2048];
int n,tb,te,ms=0,mi,mj;
part samp;
vector<part> ph[2048];
vector<part> pv[2048];
int binaryh(int ind,int line){
    int l=0,r=ph[line].size(),tek;
    while(r-l>1){
        tek=(l+r)/2;
        if (ph[line][tek].beg<=ind&&ind<ph[line][tek].en){return tek;}
        if (ind>=ph[line][tek].en){l=tek+1;}
        if (ph[line][tek].beg>ind){r=tek;}
    }
    if (ph[line][l].beg<=ind&&ind<ph[line][l].en){return l;}
    return -1;
}
int binaryv(int ind,int line){
    int l=0,r=pv[line].size(),tek;
    while(r-l>1){
        tek=(l+r)/2;
        if (pv[line][tek].beg<=ind&&ind<pv[line][tek].en){return tek;}
        if (ind>=ph[line][tek].en){l=tek+1;}
        if (pv[line][tek].beg>ind){r=tek;}
    }
    if (pv[line][l].beg<=ind&&ind<pv[line][l].en){return l;}
    return -1;
}
bool check(int i,int j,int s){
    if (binaryh(j,i)!=binaryh(j+s,i)||binaryh(j,i)==-1){return 0;}
    if (binaryh(j,i+s)!=binaryh(j+s,i+s)||binaryh(j,i+s)==-1){return 0;}
    if (binaryv(i,j)!=binaryv(i+s,j)||binaryv(i,j)==-1){return 0;}
    if (binaryv(i,j+s)!=binaryv(i+s,j+s)||binaryv(i,j+s)==-1){return 0;}
    return 1;
}
int main(){
    scanf("%d",&n);
    for (int i=0;i<n;++i){
        for (int j=0;j<n;++j){
            scanf("%d",&table[i][j]);
        }
    }
    for (int i=1;i<n;++i){
        tb=1;
        for (int j=1;j<n;++j){
            if (table[i][j]==table[i-1][j]){
                if (tb!=j){samp.beg=tb-1;samp.en=j;ph[i-1].push_back(samp);}
                tb=j+1;
            }
        }
        if (tb<n-1){samp.beg=tb-1;samp.en=n-1;ph[i-1].push_back(samp);}
    }
    for (int i=1;i<n;++i){
        tb=1;
        for (int j=1;j<n;++j){
            if (table[j][i]==table[j][i-1]){
                if (tb!=j){samp.beg=tb-1;samp.en=j;pv[i-1].push_back(samp);}
                tb=j+1;
            }
        }
        if (tb<n-1){samp.beg=tb-1;samp.en=n-1;pv[i-1].push_back(samp);}
    }
    --n;
    /*for (int i=0;i<n;++i){
        for (int j=0;j<ph[i].size();++j){
            cout<<ph[i][j].beg<<" "<<ph[i][j].en<<" ";
        }
        cout<<endl;
    }*/
    for (int i=0;i<n;++i){
        for (int j=0;j<n;++j){
            for (int s=2;s<n-i;s+=2){
                if (s>ms&&check(i,j,s)){ms=s;mi=i;mj=j;}
            }
        }
    }
    printf("%d %d %d\n",ms,mi+2,mj+2);
    return 0;
}
/*
6
1 1 4 4 13 14
2 3 3 5 13 14
2 6 7 5 12 12
9 6 7 10 10 15
9 8 8 11 11 15
16 16 17 17 18 18
*/
