#include<iostream>
#include<stdio.h>
using namespace std ;

#define MAXN 2007

int n ;
int a[ MAXN ][ MAXN ] ;
int r[ MAXN ][ MAXN ] ;
int c[ MAXN ][ MAXN ] ; 

void input ( ) {
	scanf ( "%d" , &n ) ;
	int i , j ;
	for ( i = 1 ; i <= n ; i ++ ) {
		for ( j = 1 ; j <= n ; j ++ ) {
			scanf ( "%d" , &a[ i ][ j ] ) ;
		}
	}
}

void solve ( ) {
	int i , j ;
	int lst = 0 ;
	for ( i = 1 ; i < n ; i ++ ) {
		lst = n - 1 ;
		for ( j = n - 1 ; j >= 1 ; j -- ) {
			//printf ( "row %d , column %d\n" , i , j ) ;
			//printf ( "%d %d\n" , a[ i ][ j + 1 ] , a[ i + 1 ][ j + 1 ] ) ;
			if ( a[ i ][ j + 1 ] == a[ i + 1 ][ j + 1 ] ) {
				r[ i ][ j ] = j  ;
				lst = j ;
			}
			else r[ i ][ j ] = lst ;
		} 
	}
	for ( j = 1 ; j < n ; j ++ ) {
		lst = n - 1 ;
		for ( i = n - 1 ; i >= 1 ; i -- ) {
			if ( a[ i + 1 ][ j ] != a[ i + 1 ][ j + 1 ] ) {
				c[ i ][ j ] = j ;
				lst = j ;
			}
			else c[ i ][ j ] = lst ;
		}
	}
	int ans = 0 ;
	int mn ;
	int stx = -1 , sty = -1 ;
	for ( i = 1 ; i < n ; i ++ ) {
		for ( j = 1 ; j < n ; j ++ ) {
			mn = min ( ( r[ i ][ j ] - j ) , ( c[ i ][ j ] - i ) ) ;
			if ( ans < mn ) {
				ans = mn ;
				stx = i + 1 ;
				sty = j + 1 ;
			}
		}
	}
	printf ( "%d %d %d\n" , ans + 1 , stx , sty ) ;
}

int main ( ) {
	input ( ) ;
	solve ( ) ;
	return 0 ;
}
