#include<iostream>
#include<vector>
using namespace std;
int f[10][10];
int tmp[10][10];
/*vector<int> xs;
vector<int> ys;
vector<int> si;
*/

int xs[12];
int ys[12];
int si[12];
bool pSmall(int x,int y)
{
	int dx[5]={0,1,0,-1,0};
	int dy[5]={0,0,1,0,-1};

	for(int i = 0; i < 5; ++i)
	{
		if(f[y+dy[i]][x+dx[i]]==tmp[y+dy[i]][x+dx[i]])
			return false;
	}
	for(int i = 0; i < 5; ++i)
	{
		tmp[y+dy[i]][x+dx[i]]++;
	}
	return true;
}
void dSmall(int x,int y)
{
	int dx[5]={0,1,0,-1,0};
	int dy[5]={0,0,1,0,-1};

	for(int i = 0; i < 5; ++i)
	{
		tmp[y+dy[i]][x+dx[i]]--;
	}
}
bool pMiddle(int x,int y)
{
	int dx[9]={0,-1,0,1,1,1,0,-1,-1};
	int dy[9]={0,-1,-1,-1,0,1,1,1,0};

	for(int i = 0; i < 9; ++i)
	{
		if(f[y+dy[i]][x+dx[i]]==tmp[y+dy[i]][x+dx[i]])
			return false;
	}
	for(int i = 0; i < 9; ++i)
	{
			tmp[y+dy[i]][x+dx[i]]++;
	}
	return true;
}
void dMiddle(int x,int y)
{
	int dx[9]={0,-1,0,1,1,1,0,-1,-1};
	int dy[9]={0,-1,-1,-1,0,1,1,1,0};

	for(int i = 0; i < 9; ++i)
	{
			tmp[y+dy[i]][x+dx[i]]--;
	}
}
bool pBig(int x,int y)
{
	int dx[13]={0,-1,0,1,1,1,0,-1,-1,0,2,0,-2};
	int dy[13]={0,-1,-1,-1,0,1,1,1,0,-2,0,2,0};

	for(int i = 0; i < 13; ++i)
	{
		if(f[y+dy[i]][x+dx[i]]==tmp[y+dy[i]][x+dx[i]])
			return false;;
	}
	for(int i = 0; i < 13; ++i)
	{
			tmp[y+dy[i]][x+dx[i]]++;
	}
	return true;
}
void dBig(int x,int y)
{
	int dx[13]={0,-1,0,1,1,1,0,-1,-1,0,2,0,-2};
	int dy[13]={0,-1,-1,-1,0,1,1,1,0,-2,0,2,0};

	for(int i = 0; i < 13; ++i)
	{
			tmp[y+dy[i]][x+dx[i]]--;
	}
}

bool check(int lim)
{
	for(int i = 0; i < 10; ++i)
	{
		for(int j = 0; j < 10; ++j)
		{
			if(tmp[i][j]!=f[i][j]) return false;
		}
	}
	for(int i = 0; i < lim; ++i)
	{
		cout<<xs[i]<<" "<<ys[i]<<" "<<si[i]<<endl;
	}
	return true;
}	

bool solve(int n,int lim)
{

	if(n==lim)
	{
		if(check(lim)) return true;
		else return false;
	}

	for(int i = 1; i < 9; ++i)
	{
		for(int j = 1; j < 9; ++j)
		{
			if(f[i][j]==tmp[i][j]) continue;
			for(int k = 1; k < 4; ++k)
			{
				if(k==1)
				{
					if(!pSmall(j,i)) break;
					/*xs.push_back(j);
					ys.push_back(i);
					si.push_back(1);*/
					xs[n]=j;
					ys[n]=i;
					si[n]=1;
					if(solve(n+1,lim))
					{
						return true;
					}
					dSmall(j,i);
				}
				else if(k==2)
				{
					if(!pMiddle(j,i)) break;
					/*xs.push_back(j);
					ys.push_back(i);
					si.push_back(2);*/

					xs[n]=j;
					ys[n]=i;
					si[n]=2;
					if(solve(n+1,lim))
					{
						return true;
					}
					dMiddle(j,i);
				}
				else if(k==3)
				{
					if(i<2||7<i||j<2||7<j) break;
					if(!pBig(j,i)) break;
					/*xs.push_back(j);
					ys.push_back(i);
					si.push_back(3);
					*/
					xs[n]=j;
					ys[n]=i;
					si[n]=3;
					if(solve(n+1,lim))
					{
						return true;
					}
					dBig(j,i);
				}
			}
		}
	}
	return false;
}

int main()
{
	int n; cin>>n;
	for(int i = 0; i < 10; ++i)
	{
		for(int j = 0; j < 10; ++j)
		{
			cin>>f[i][j];
		}
	}
	solve(0,n);
  return 0;
}