//#include <stdio.h>
//#include <stdlib.h>
//int map[301][301]={};
//int cnt[3]={};
//int s1=0,s2=0;
//int s=0;
//int dir[4][2] = {{+1,+0},
// {+1,-1},
// {+0,-1},
// {+1,+1}};
//void dfs(int x,int y,int z,int f)
//{
// if(x<0 || y<0||x>=19 || y>=19 || map[x][y]!=z)
// {
// return ;
// }
// map[x][y] = 0;
// cnt[z]++;
// if(f==0)
// {
// for(int t=0;t<4;t++)
// {
// cnt[z]=1;
// dfs(x+dir[t][0], y+dir[t][1], z, t+1);
// }
// }
// dfs(x+dir[f-1][0], y+dir[f-1][1], z, f);
//}
//int main()
//{
// int i,j;
// for(i=0;i<19;i++)
// {
// for(j=0;j<19;j++)
// {
// scanf("%d",&map[i][j]);
// }
// }
// for(i=0;i<19;i++)
// {
// for(j=0;j<19;j++)
// {
// if(map[i][j]!=0)
// {
// dfs(i,j,map[i][j],s1);
// if(cnt[map[i][j]]==5) // 승부가 났을때
// {
// printf("%d\n",map[i][j]);
// printf("%d %d",i,j);
// return 0;
// }
// }
// }
// }
// printf("0 %d %d",cnt[1],cnt[2]);
// return 0;
//}
#include <stdio.h>
#include <stdlib.h>
int map[301][301];
int cnt1=0,cnt2=0;
int s1=0,s2=0;
int s=0;
void dfs1(int x,int y,int z,int f)
{
if(x<0 || y<0||x>=19 || y>=19||map[x][y]!=z)
{
return ;
}
map[x][y] = 0;
cnt1++;
if(f==0)
{
dfs1(x+1,y,z,1);
dfs1(x+1,y-1,z,2);
dfs1(x,y-1,z,3);
dfs1(x+1,y+1,z,4);
}
if(f==1) dfs1(x+1,y,z,1);
if(f==2) dfs1(x+1,y-1,z,2);
if(f==3) dfs1(x,y-1,z,3);
if(f==4) dfs1(x+1,y+1,z,4);
}
void dfs2(int x,int y,int z,int f)
{
if(x<0 || y<0||x>=19 || y>=19||map[x][y]!=z)
{
return;
}
map[x][y] = 0;
cnt2++;
if(f==0)
{
dfs2(x+1,y,z,1);
dfs2(x+1,y-1,z,2);
dfs2(x,y-1,z,3);
dfs2(x+1,y+1,z,4);
}
if(f==1) dfs2(x+1,y,z,1);
if(f==2) dfs2(x+1,y-1,z,2);
if(f==3) dfs2(x,y-1,z,3);
if(f==4) dfs2(x+1,y+1,z,4);
}
int main()
{
int i,j;
for(i=0;i<19;i++)
{
for(j=0;j<19;j++)
{
scanf("%d",&map[i][j]);
}
}
for(i=0;i<19;i++)
{
for(j=0;j<19;j++)
{
if(map[i][j]==1)
{
dfs1(i,j,map[i][j],s1);
if(cnt1==5) // 승부가 났을때
{
printf("1\n");
printf("%d %d",i+1,j+1);
return 0;
}
}
if(map[i][j]==2)
{
dfs2(i,j,map[i][j],s2);
if(cnt2==5)// 승부가 났을때
{
printf("2\n");
printf("%d %d",i+1,j+1);
return 0;
}
}
}
}
printf("0 %d %d",cnt1,cnt2);
return 0;
}



