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

#define MAXN 2000

int square[MAXN][MAXN],bricks[MAXN][MAXN],n;

void inAll()
{
    scanf("%d",&n);
    for (int i=0; i<n; i++)
        for (int j=0; j<n; j++)
            scanf("%d",&square[i][j]);
}

void checkBricks ()
{
    for (int i=1; i<n-1; i++)
        for (int j=1; j<n-1; j++)
        {
            bricks[i-1][j-1] = (square[i][j] == square[i+1][j] && i+1 != n-1) ? 2 : (square[i][j] == square[i][j+1] && j+1 != n-1) ? 1 : 0;
        }
}

void getAnswer()
{
    checkBricks ();
    int maxSquare = 0, curMax = 0, x, y;
    for (int i=0; i<n-2; i++)
        for (int j=0; j<n-2; j++) 
        {
            
            if ((bricks[i][j] == bricks[i][j] && bricks[i][j+1] == 2 && j+1 != n-3) || (bricks[i][j] == bricks[i+1][j] && bricks[i][j] == 1 && i+1 != n-3))
            {curMax = 2; x = i+2; y = j+2;}
            maxSquare = max (maxSquare, curMax);
        }
        for (int i=0; i<n-2; i++)
        for (int j=0; j<n-2; j++) 
        if (bricks[i][j] == 1)
        {
            if (bricks[i][j+2] == 1 and ((bricks[i-2][j]+bricks[i-2][j+1]+bricks[i-2][j+2]+bricks[i-2][j+3]==8 and bricks[i+1][j]==1 and bricks[i+1][j+2]==1) or (bricks[i+1][j]+bricks[i+1][j+1]+bricks[i+1][j+2]+bricks[i+1][j+3]==8 and bricks[i-1][j]==1 and bricks[i-1][j+2])))
            {maxSquare = 4;
            x=i+2;y=j+2;}
        }
        
    printf("%d %d %d\n",maxSquare,x,y);
}

int main()
{
    inAll();
    getAnswer();    
    return 0;
}