#include <bits/stdc++.h>
#define SIZE 300005
#define MOD 1000000007LL
#define INF 1 << 30
#define LLINF 1LL << 60
#define REP(i,n) for(int i=0;i<n;i++)
#define FOR(i,a,b) for(int i=a;i<=b;i++)
#define DOWN(i,b,a) for(int i=b;i>=a;i--)
#define SET(a,c) memset(a,c,sizeof a)
#define FORALL(i,c) for(__typeof((c).begin())i=(c).begin();i!=(c).end();++i)
#define FOREACH(i,c) for(auto (i) : (c))
#define BIT(i,j) ((i)>>(j))&1
#define ALL(o) (o).begin(), (o).end()
#define ERASE(o) (o).erase(unique((o).begin(),(o).end()), (o).end())
#define SQ(x) ((x)*(x))
using namespace std;
typedef long long ll;
typedef pair<ll,ll> Pll;
typedef pair<int, int> Pii;
typedef pair<double, double> Pdd;
typedef complex<double> dcomplex;
template<typename T> inline void priv(vector<T>a){REP(i,a.size()){cerr<<a[i]<<((i==a.size()-1)?"\n":" ");}}
ll gcd(ll a,ll b){int c=max(a,b);int d=min(a,b);return c==0||d==0?c:gcd(c%d,d);}
ll lcm(ll a,ll b){return a==0||b==0?0:a*b/gcd(a,b);}
ll fact(ll a){ll b=1;FOR(i,1,a)b*=i;return b;}

int n;
int a[10][10];
int di[] = {0,1,1,2};
int dj[] = {0,0,1,0};

bool canPos(int i, int j, int t)
{
  switch(t)
  {
    case 3:
      if(i<=1||i>=8||j<=1||j>=8) return false;
      FOR(k,-2,2) FOR(l,-(2-abs(k)),(2-abs(k))) if(a[i+k][j+l]==0) return false;
      return true;
    case 2:
      if(i<=0||i>=9||j<=0||j>=9) return false;
      FOR(k,-1,1) FOR(l,-1,1) if(a[i+k][j+l]==0) return false;
      return true;
    case 1:
      if(i<=0||i>=9||j<=0||j>=9) return false;
      FOR(k,-1,1) FOR(l,-(1-abs(k)),1-abs(k)) if(a[i+k][j+l]==0) return false;
      return true;
    default:
      return false;
  }
}

void turn(int i, int j, int t, int c)
{
  switch(t)
  {
    case 3:
      FOR(k,-2,2) FOR(l,-(2-abs(k)),(2-abs(k))) a[i+k][j+l]+=c;
      break;
    case 2:
      FOR(k,-1,1) FOR(l,-1,1) a[i+k][j+l]+=c;
      break;
    case 1:
      FOR(k,-1,1) FOR(l,-(1-abs(k)),1-abs(k)) a[i+k][j+l]+=c;
    default:
      break;
  }
}

bool dfs(int n)
{
  if(n==0)
  {
    REP(i,10) REP(j,10) if(a[i][j] > 0) return false;
    return true;
  }
  REP(i,10) REP(j,10) if(a[i][j])
  {
    int x, y;
    FOR(t,1,3) if(canPos(y=i+di[t],x=j+dj[t],t))
    {
      turn(y,x,t,-1);
      if(dfs(n-1)) {printf("%d %d %d\n",x,y,t); return true;}
      turn(y,x,t,1);
    }
    return false;
  }
  return false;
}

int main()
{
  cin >> n;
  REP(i,10) REP(j,10) cin >> a[i][j];
  dfs(n);
  return 0;
}