#include <iostream>
#include <stack>
using namespace std;

int ok=0;

typedef struct{
	int mp[10][10];//現在のマップの状態
	int n;//残り落とせる数
	int x;//
	int y;//見るべき点
	int dr;//落とした回数
	int lst[12][3];//落とした点
	int sum;//濃さ合計
}state;

stack<state>S;

int drpx[13]={0,0,1,0,-1,1,1,-1,-1,0,2,0,-2};
int drpy[13]={0,1,0,-1,0,1,-1,1,-1,2,0,-2,0};

void dfs(state t){
	//cout<<t.x<<" "<<t.y<<" "<<t.n<<" "<<t.sum<<endl;
	if(ok)return;
	if(t.n==0 && t.sum==0){
		for(int i=0;i<t.dr;i++){
			cout<<t.lst[i][0]<<" "<<t.lst[i][1]<<" "<<t.lst[i][2]<<endl;
		}
		ok=1;
		return;
	}
	if(t.n<=0)return;
	if(t.sum<5)return;
	if(t.y>=10)return;
	
	
	if(t.mp[t.x][t.y]==0){
		t.x++;
		if(t.x>=10){
			t.x=0;
			t.y++;
		}
		S.push(t);
		return;
	}
	
	if(t.x<=8&&t.y<=7 && t.x>=1){
		
		int k=1;
		int flg=1;
		
		for(int i=0;i<=k*4;i++){
			t.mp[t.x+drpx[i]][t.y+drpy[i]+1]--;
			if(t.mp[t.x+drpx[i]][t.y+drpy[i]+1]<0)flg=0;
		}
		t.sum-=1+k*4;
		t.n--;
		t.lst[t.dr][0]=t.x;
		t.lst[t.dr][1]=t.y+1;
		t.lst[t.dr][2]=k;
		t.dr++;
		if(flg)S.push(t);
		t.dr--;
		t.n++;
		t.sum+=1+k*4;
		for(int i=0;i<=k*4;i++){
			t.mp[t.x+drpx[i]][t.y+drpy[i]+1]++;
		}
	}
	
	if(t.x<=7&&t.y<=7){
		int k=2;
		int flg=1;
		
		for(int i=0;i<=k*4;i++){
			t.mp[t.x+drpx[i]+1][t.y+drpy[i]+1]--;
			if(t.mp[t.x+drpx[i]+1][t.y+drpy[i]+1]<0)flg=0;
		}
		t.sum-=1+k*4;
		t.n--;
		t.lst[t.dr][0]=t.x+1;
		t.lst[t.dr][1]=t.y+1;
		t.lst[t.dr][2]=k;
		t.dr++;
		if(flg)S.push(t);
		t.dr--;
		t.n++;
		t.sum+=1+k*4;
		for(int i=0;i<=k*4;i++){
			t.mp[t.x+drpx[i]+1][t.y+drpy[i]+1]++;
		}
	}
	if(t.x<=7&&t.y<=5 && t.x>=2){
		int k=3;
		int flg=1;
		
		for(int i=0;i<=k*4;i++){
			t.mp[t.x+drpx[i]][t.y+drpy[i]+2]--;
			if(t.mp[t.x+drpx[i]][t.y+drpy[i]+2]<0)flg=0;
		}
		t.sum-=1+k*4;
		t.n--;
		t.lst[t.dr][0]=t.x;
		t.lst[t.dr][1]=t.y+2;
		t.lst[t.dr][2]=k;
		t.dr++;
		if(flg)S.push(t);
		t.dr--;
		t.n++;
		t.sum+=1+k*4;
		for(int i=0;i<=k*4;i++){
			t.mp[t.x+drpx[i]][t.y+drpy[i]+2]++;
		}
	}
	
	
	return;
}

int main(){
	state fst;
	cin>>fst.n;
	fst.dr=0;
	fst.x=0;
	fst.y=0;
	fst.sum=0;
	for(int i=0;i<10;i++){
		for(int j=0;j<10;j++){
			cin>>fst.mp[j][i];
			fst.sum+=fst.mp[j][i];
		}
	}
	S.push(fst);
	
	while(ok==0){
		state t=S.top();
		S.pop();
		dfs(t);
	}
	
	return 0;
}
