#include<iostream>
#include<vector>
using namespace std;
#define r(a) for(int a=0;a<10;a++)

struct pain{int x,y,s;};
vector<pain>vec;

int n,ma,c[10][10];
bool v[10][10]={0};

int s(int i,int j){ return min(c[i][j],min(c[i-1][j],min(c[i+1][j],min(c[i][j+1],c[i][j-1])))); }
int m(int i,int j){ return min(s(i,j),min(c[i-1][j-1],min(c[i-1][j+1],min(c[i+1][j-1],c[i+1][j+1])))); }
int l(int i,int j){ return min(m(i,j),min(c[i-2][j],min(c[i+2][j],min(c[i][j-2],c[i][j+2])))); }

void ds(int i,int j,int ma){ c[i][j]-=ma;c[i-1][j]-=ma;c[i+1][j]-=ma;c[i][j+1]-=ma;c[i][j-1]-=ma; }
void dm(int i,int j,int ma){ c[i-1][j-1]-=ma;c[i-1][j+1]-=ma;c[i+1][j-1]-=ma;c[i+1][j+1]-=ma; }
void dl(int i,int j,int ma){ c[i-2][j]-=ma;c[i+2][j]-=ma;c[i][j-2]-=ma;c[i][j+2]-=ma; }

void is(int i,int j,int ma){ c[i][j]+=ma;c[i-1][j]+=ma;c[i+1][j]+=ma;c[i][j+1]+=ma;c[i][j-1]+=ma; }
void im(int i,int j,int ma){ c[i-1][j-1]+=ma;c[i-1][j+1]+=ma;c[i+1][j-1]+=ma;c[i+1][j+1]+=ma; }
void il(int i,int j,int ma){ c[i-2][j]+=ma;c[i+2][j]+=ma;c[i][j-2]+=ma;c[i][j+2]+=ma; }

bool eval(){
    int suc=1;
    r(a)r(b)
    if(c[a][b]==1)suc=0;
    if(suc){
        for(int k=0;k<vec.size();k++)
            cout<<vec[k].y<<" "<<vec[k].x<<" "<<vec[k].s<<endl;
        return 1;
    }
    return 0;
}
bool dfs(int i,int j){
    pain tp;
    tp.x=i;tp.y=j;
    v[i][j]=1;
    if(i>1&&i<8&&j>1&&j<8){
        ma=l(i,j);
        if(ma){
            dl(i,j,ma);dm(i,j,ma);ds(i,j,ma);
            tp.s=3;
            vec.push_back(tp);
            if(eval())return 1;
            r(a)r(b)
            if(v[a][b]==0&&s(a,b)&&dfs(a,b))
                return 1;
            il(i,j,ma);im(i,j,ma);is(i,j,ma);
            vec.pop_back();
        }
    }
    if(i>0&&i<9&&j>0&&j<9){
        ma=m(i,j);
        if(m(i,j)){
            dm(i,j,ma);ds(i,j,ma);
            tp.s=2;
            vec.push_back(tp);
            if(eval())return 1;
            r(a)r(b)
            if(!v[a][b]&&s(a,b)&&dfs(a,b))
                return 1;
            im(i,j,ma);is(i,j,ma);
            vec.pop_back();
        }
        ma=s(i,j);
        if(ma){
            ds(i,j,ma);
            tp.s=1;
            vec.push_back(tp);
            if(eval())return 1;
            r(a)r(b)
            if(!v[a][b]&&s(a,b)&&dfs(a,b))
                return 1;
            is(i,j,ma);
            vec.pop_back();
        }
    }
    v[i][j]=0;
    return 0;
}
int main(){
    cin>>n;
    r(i)r(j)
    cin>>c[i][j];
    r(i)r(j)
    if(s(i,j))dfs(i,j);
}