#include <iostream>
#include <stdio.h>
#include <string.h>
using namespace std;

int pt[3][5]={{0,1,3,1,0},{0,3,3,3,0},{1,3,5,3,1}};
int ax[12],ay[12],az[12];

int seach(int n,int (*da)[10]) {
	int i,j,k,x,y,x2,y2,z,f,d[10][10];
	f=0;
	for (i=0;i<10;i++) for (j=0;j<10;j++) {
		d[i][j]=da[i][j];
		if (f==0 && d[i][j]>0) { x=j; y=i; f=1; }
	}
	if (x==9 || y>8) return 0;
	if (n==-1) {
		f=0;
        for (i=0;i<10;i++) for (j=0;j<10;j++) if (d[i][j]>0) f=1;
		if (f==0) return 1; else return 0;
	}

	for (k=0;k<3;k++) {
		if (k==0) if (x==0) continue; else { x2=x; y2=y+1;}
		if (k==1) if (x>7) continue; else {x2=x+1;y2=y+1;}
		if (k==2) if (x<2 || x>7 || y>5) continue; else { x2=x; y2=y+2; }
        z=k+1; f=0;
		for (i=-(z+1)/2;i<=(z+1)/2;i++) for (j=-(pt[z-1][2+i])/2;j<=(pt[z-1][2+i])/2;j++) if (d[y2+j][x2+i]==0) f=1;
		if (f==0) {
			for (i=-(z+1)/2;i<=(z+1)/2;i++) for (j=-(pt[z-1][2+i])/2;j<=(pt[z-1][2+i])/2;j++) d[y2+j][x2+i]--;
			ax[n]=x2; ay[n]=y2; az[n]=z ; if (seach(n-1,d)==1) return 1;
            for (i=-(z+1)/2;i<=(z+1)/2;i++) for (j=-(pt[z-1][2+i])/2;j<=(pt[z-1][2+i])/2;j++) d[y2+j][x2+i]++;
		}
	}
    return 0;
}

int main() {
    int i,j,n,da[10][10];
	cin >> n;
	for (i=0;i<10;i++) for (j=0;j<10;j++) cin >> da[i][j];
	seach(n-1,da);
    for (i=0;i<n;i++) cout << ax[i] << " " << ay[i] << " " << az[i] << endl;
	return 0;
}