#include <bits/stdc++.h>
using namespace std;
#define rep(i, a, b) for(int i = (a); i <= (b); i++)
#define red(i, a, b) for(int i = (a); i >= (b); i--)
typedef long long ll;
#define X first
#define Y second
#define MAXN 200010
#define LL long long

int u[10][3][5];

void prework() {
    u[0][0][1] = u[0][0][2] = 1;
    u[0][1][1] = u[0][1][3] = 1;
    u[0][2][1] = u[0][2][2] = 1;
    
    u[1][2][1] = u[1][2][2] = 1;
    
    u[2][0][2] = 1;
    u[2][1][1] = u[2][1][2] = u[2][1][3] = 1;
    u[2][2][1] = 1;
    
    u[3][1][1] = u[3][1][2] = u[3][1][3] = 1;
    u[3][2][1] = u[3][2][2] = 1;
    
    u[4][0][1] = 1;
    u[4][1][2] = 1;
    u[4][2][1] = u[4][2][2] = 1;
    
    u[5][0][1] = 1;
    u[5][1][1] = u[5][1][2] = u[5][1][3] = 1;
    u[5][2][2] = 1;
    
    u[6][0][1] = u[6][0][2] = 1;
    u[6][1][1] = u[6][1][2] = u[6][1][3] = 1;
    u[6][2][2] = 1;
    
    u[7][1][1] = 1;
    u[7][2][1] = u[7][2][2] = 1;
    
    u[8][0][1] = u[8][0][2] = 1;
    u[8][1][1] = u[8][1][2] = u[8][1][3] = 1;
    u[8][2][1] = u[8][2][2] = 1;
    
    u[9][0][1] = 1;
    u[9][1][1] = u[9][1][2] = u[9][1][3] = 1;
    u[9][2][1] = u[9][2][2] = 1;
}

void solve(int w, int s) {
    if (w == 0) {
        if (s & 1 == 0) {
            flag = 1;
            print();
        }
        return;
    }
    if (isok[c][s])) return;
    int o[6], x = s;
    for(int i = 5; i > 0; i--, x >>= 1) o[i] = x & 1;
    rep(a, 0, 9) {
        if (o[1] == 0 && u[a][2][1] != v[2][w]) continue;
        rep(b, 0, 9) {
            if (o[2] == 0) {
                if (v[4][w] == 0 && (u[a][2][2] == 1 || u[b][2][1] == 1)) continue;
                if (v[4][w] == 1 && u[a][2][2] == 0 && u[b][2][2] == 0) continue;
            }
            int c = a + b + o[5], nxt;
            nxt = c / 10; c %= 10;
            if (o[3] == 0) {
                if (v[6][w] == 0 && (u[b][2][2] == 1 || u[c][2][1] == 1)) continue;
                if (v[6][w] == 1 && u[b][2][2] == 0 && u[c][2][1] == 0) continue;
            }
            if (o[4] == 0 && u[c][2][2] != v[8][w]) continue;
            for(int i = 1; i <= 9; i += 2) {
                if (v[i][w] == 0) {
                    if (i == 1 && u[a][1][1] == 1) continue;
                    if (i == 3 && (u[a][1][2] == 1 || u[b][1][1] == 1)) continue;
                    if (i == 5 && (u[a][1][3] == 1 || u[b][1][2] == 1 || u[c][1][1] == 1)) continue;
                    if (i == 7 && (u[b][1][3] == 1 || u[c][1][2] == 1)) continue;
                    if (i == 9 && u[c][1][3] == 1) continue;
                }
                if (v[i][w] == 1) {
                    if (i == 1 && u[a][1][1] == 0) continue;
                    if (i == 3 && (u[a][1][2] == 0 && u[b][1][1] == 0)) continue;
                    if (i == 5 && (u[a][1][3] == 0 && u[b][1][2] == 0 && u[c][1][1] == 0)) continue;
                    if (i == 7 && (u[b][1][3] == 0 && u[c][1][2] == 0)) continue;
                    if (i == 9 && u[c][1][3] == 0) continue;
                }
            }
            ans[1][w] = a; ans[2][w] = b; ans[3][w] = c;
            int news = 0;
            news += u[a][0][1] << 4;
            news += (u[a][0][2] | u[b][0][1]) << 3;
            news += (u[b][0][2] | u[c][0][1]) << 2;
            news += u[c][0][2] << 1;
            news += nxt;
            solve(w - s, news);
            if (flag) return;
        }
    } 
}
int main() {
    prework();
    scanf("%d", &w);
    rep(i, 1, 9) {
        if (i & 1) rep(j, 1, w + 1) scanf("%d", v[i][j]);
        else rep(j, 0, w) scanf("%d", v[i][j]);
    }
    flag = 0;
    memset(isok, 0, sizeof(isok));
    solve(w, 0);
    return 0;
}
