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

int ds[3] = {5,9,13};
int w[3] = {1,1,2};
int dpx[13] = {0, 1, 0, -1, 0, 1, -1, -1, 1, 2, 0, -2, 0};
int dpy[13] = {0, 0, 1, 0, -1, 1, 1, -1, -1, 0, 2, 0, -2};
int sheet[10][10];
int sum;
int ans[12][3];
int buf[12][10][10];

bool check(int x, int y, int s) {
  for (int i=0; i<ds[s]; i++) {
    if (!sheet[y+dpy[i]][x+dpx[i]]) return false;
  }
  return true;
}

void absorb(int x, int y, int s) {
  for (int i=0; i<ds[s]; i++) {
    --sheet[y+dpy[i]][x+dpx[i]];
  }
}

void drop(int x, int y, int s) {
  for (int i=0; i<ds[s]; i++) {
    ++sheet[y+dpy[i]][x+dpx[i]];
  }
}

bool dfs(int x, int y, int s, int n) {
  bool r = false;
  if (check(x, y, s)) {
    ans[n][0] = x;
    ans[n][1] = y;
    ans[n][2] = s+1;
    memcpy(&buf[n][0][0], sheet, sizeof(int)*100);
    absorb(x, y, s);
    sum -= ds[s];
    if (!n) r = !sum;
    else r = dfs(x, y, s, n-1);
    if (r) return r;
    memcpy(sheet, &buf[n][0][0], sizeof(int)*100);
    //drop(x, y, s);
    sum += ds[s];
  }
  if (x<9-w[s]) {
    r = dfs(x+1, y, s, n);
  } else if (y<9-w[s]) {
    r = dfs(w[s], y+1, s, n);
  } else if (s) {
    r = dfs(w[s-1], w[s-1], s-1, n);
  }
  return r;
}

int main() {
  int m;
  sum = 0;
  cin >> m;
  for (int i=0; i<10; i++) {
    for (int j=0; j<10; j++) {
      cin >> sheet[i][j];
      sum += sheet[i][j];
    }
  }
  dfs(2, 2, 2, m-1);
  for (int i=0; i<m; i++) {
    cout << ans[i][0] << " " << ans[i][1] << " " << ans[i][2] << endl;
  }
}