#include<iostream>
using namespace std;
int N;
int S[10][10];
int A[5][2]={{1,0},{0,1},{-1,0},{0,-1},{0,0}};
int B[9][2]={{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1},{0,0}};
int C[13][2]={{2,0},{0,-2},{-2,0},{0,2},{1,0},{0,1},{-1,0},{0,-1},{1,1},{1,-1},{-1,1},{-1,-1},{0,0}};
int cnt;
bool dfs(int x,int y,int id,int t)
{
	if(id==N)
	{
		return cnt==0;
	}
	if(t==0)
	{
		int k;
		for(k=0;k<5;k++)
		{
			int tx=x+A[k][0],ty=y+A[k][1];
			if(0<=tx&&tx<10&&0<=ty&&ty<10)
			{
				if(S[tx][ty]==0)break;
				S[tx][ty]--;
				cnt--;
			}
		}
		if(k==5)
		{
			if(dfs(x,y,id+1,t))
			{
				cout<<y<<" "<<x<<" "<<1<<endl;
				return true;
			}
		}
		for(;k--;)
		{
			int tx=x+A[k][0],ty=y+A[k][1];
			if(0<=tx&&tx<10&&0<=ty&&ty<10)S[tx][ty]++,cnt++;
		}
		return dfs(x,y,id,t+1);
	}
	else if(t==1)
	{
		int k;
		for(k=0;k<9;k++)
		{
			int tx=x+B[k][0],ty=y+B[k][1];
			if(0<=tx&&tx<10&&0<=ty&&ty<10)
			{
				if(S[tx][ty]==0)break;
				S[tx][ty]--;
				cnt--;
			}
		}
		if(k==9)
		{
			if(dfs(x,y,id+1,t))
			{
				cout<<y<<" "<<x<<" "<<2<<endl;
				return true;
			}
		}
		for(;k--;)
		{
			int tx=x+B[k][0],ty=y+B[k][1];
			if(0<=tx&&tx<10&&0<=ty&&ty<10)S[tx][ty]++,cnt++;
		}
		return dfs(x,y,id,t+1);
	}
	else if(t==2)
	{
		int k;
		for(k=0;k<13;k++)
		{
			int tx=x+C[k][0],ty=y+C[k][1];
			if(0<=tx&&tx<10&&0<=ty&&ty<10)
			{
				if(S[tx][ty]==0)break;
				S[tx][ty]--;
				cnt--;
			}
		}
		if(k==13)
		{
			if(dfs(x,y,id+1,t))
			{
				cout<<y<<" "<<x<<" "<<3<<endl;
				return true;
			}
		}
		for(;k--;)
		{
			int tx=x+C[k][0],ty=y+C[k][1];
			if(0<=tx&&tx<10&&0<=ty&&ty<10)S[tx][ty]++,cnt++;
		}
		if(x>=2)
		{
			if(S[x-2][y]>0)return false;
		}
		return dfs(y==9?x+1:x,y==9?0:y+1,id,0);
	}
}
main()
{
	cin>>N;
	for(int i=0;i<10;i++)for(int j=0;j<10;j++)
	{
		cin>>S[i][j];
		cnt+=S[i][j];
	}
	dfs(0,0,0,0);
}

