#include <iostream>
#include <vector>
#include <map>
#include <set>
#include <algorithm>
using namespace std;

struct State{
	int x, y, k;
	State(){}
	State(int x_, int y_, int k_){
		x = x_; y = y_; k = k_;
	}
};

bool ans_flag = false;
vector<State> v;

int dk[3] = {5,9,13};

int dx[3][13] = {
	{0,0,-1,1,0},
	{-1,-1,-1,0,0,0,1,1,1},
	{-2,-1,-1,-1,0,0,0,0,0,1,1,1,2}
};

int dy[3][13] = {
	{-1,1,0,0,0},
	{-1,0,1,-1,0,1,-1,0,1},
	{0,-1,0,1,-2,-1,0,1,2,-1,0,1,0}
};

// (x,y)に染料 k を落としたかどうか
bool is_fill(int x, int y, int k, const vector<vector<int> > &a){
	for(int i = 0; i < dk[k]; i++){
		int mx = x + dx[k][i];
		int my = y + dy[k][i];
		if( 0 <= mx && mx < 10 && 0 <= my && my < 10 ){
			if( a[my][mx] == 0 ){
				return false;
			}
		}
	}
	return true;
}

// (x,y)の染料 k を落とす前の状態にする
void fill(int x, int y, int k, vector<vector<int> > &a){
	for(int i = 0; i < dk[k]; i++){
		int mx = x + dx[k][i];
		int my = y + dy[k][i];
		if( 0 <= mx && mx < 10 && 0 <= my && my < 10 ){
			a[my][mx]--;
		}
	}
}

// 全部白いかどうか返す
bool is_white(const vector<vector<int> > &a){
	bool flag = true;
	for(int y = 0; y < 10; y++){
		for(int x = 0; x < 10; x++){
			if( a[y][x] != 0 ){
				return false;
			}
		}
	}
	return true;
}

void solve(int n, vector<vector<int> > &a, vector<State> ans){
	if( ans_flag || n < 0 ) return ;
	
	// 解の出力
	if( n == 0 && is_white(a) ){
		for(int i = 0; i < ans.size(); i++){
			cout << ans[i].x << " " << ans[i].y << " " << ans[i].k + 1 << endl;
		}
		ans_flag = true;
		return ;
	}
	
	for(int i = 0; i < v.size(); i++){
		int x = v[i].x, y = v[i].y, k = v[i].k;
		
		if( is_fill(x, y, k, a) ){
			ans.push_back( State(x, y, k) );
			vector<vector<int> > a_ = a;
			fill(x, y, k, a_);
			solve(n-1, a_, ans);
			ans.pop_back();
		}
	}
}

void init(const vector<vector<int> > &a){
	for(int k = 0; k < 3; k++){
		for(int y = 0; y < 10; y++){
			for(int x = 0; x < 10; x++){
				if( is_fill(x, y, k, a) ){
					v.push_back( State(x, y, k) );
				}
			}
		}
	}
}

int main(){
	// n := 染料を落とした回数
	// a := 布の状態
	int n;
	vector<vector<int> > a(10, vector<int>(10));
	
	// 入力
	cin >> n;
	for(int y = 0; y < 10; y++){
		for(int x = 0; x < 10; x++){
			cin >> a[y][x];
		}
	}
	
	init(a);
	reverse(v.begin(), v.end());
	vector<State> ans;
	solve(n, a, ans);
}