#include<cstdio>
#include<algorithm>

int m, v[2005][2005], hs[2005][2005], vs[2005][2005], b, bx, by;
bool vt[2005][2005], hz[2005][2005];

bool search(int s, int x, int y){	
	if(hs[x][y] >= s && vs[x][y] >= s && hs[x + s][y] >= s && vs[x][y + s] >= s){
		b = s, bx = x, by = y;
		return 1;
	}
	
	return 0;
}

int main(void){
#ifdef ASDASD
	freopen("3.in", "r", stdin);
#endif
	scanf("%d", &m);
	for(int i = 0 ; i < m ; i++)
		for(int j = 0 ; j < m ; j++) {
			scanf("%d", v[i] + j);
			hz[i][j] = i && j && v[i][j] != v[i-1][j];
			vt[i][j] = i && j && v[i][j] != v[i][j-1];
		}

	int mv = 0, mh = 0;
	for(int i = m - 1 ; i ; i--)
		for(int j = m - 1 ; j ; j--){
			vs[i][j] = vt[i][j] ? vs[i+1][j] + 1 : 0;
			hs[i][j] = hz[i][j] ? hs[i][j+1] + 1 : 0;
			mv = std::max(mv, vs[i][j]);
			mh = std::max(mh, hs[i][j]); 
		}

	for(int s = std::min(mv,mh) ; s >= 2 ; s--){
		bool ok = 0;
		for(int i = 1 ; !ok && i < m - s + 1 ; i++)
			for(int j = 1 ; !ok && j < m - s + 1 ; j++)
				if(hs[i][j] < s)
					j += hs[i][j];
				else if(search(s, i, j))
					ok = 1;
		if(ok)
			break;
	}

	printf("%d %d %d", b, bx + 1, by + 1);
	return 0;
}
