1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
#include "bits/stdc++.h"
using namespace std;

using ll = long long;

void algosia() {
    ll n, t;
    cin >> n >> t;
    while (t--) {
        vector <vector <int>> v(10, vector <int>(10, 0));
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 4; j++) {
                v[i][j] = ((i >> j)&1);
            }
        }
        
        for (int j = 4; j < 10; j++) {
            for (int i = 0; i < 3; i++) {
                v[i][j] = (((j - 4) >> i)&1);
            }
        }
        
        cin >> n;
        for (int i = 9; i >= 3; i--) {
            for (int j = 9; j >= 4; j--) {
                v[i][j] = (n&1);
                n >>= 1;
            }
        }

        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                cout << v[i][j];
            }
            cout << endl;
        }
    }
}

void bajtek() {
    ll n, t;
    cin >> n >> t;
    while (t--) {
        vector <vector <int>> v(10, vector <int>(10));
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                char c;
                cin >> c;
                v[i][j] = (c - '0');
            }
        }
        
        bool good = false;
        vector <vector <int>> tmp(10, vector <int>(10));
        for (int i = 0; i < 10 && !good; i++) {
            for (int j = 0; j < 10 && !good; j++) {
                for (int k = 0; k < 10 && !good; k++) {
                    for (int m = 0; m < 10 && !good; m++) {
                        if (i == j || j == k || i == k || i == m || j == m || k == m) continue;
                        
                        vector <int> num(11, -1);
                        for (int y = 0; y < 10; y++) {
                            int x = v[y][i] + 2 * v[y][j] + 4 * v[y][k] + 8 * v[y][m];
                            if (x <= 10) num[x] = y;
                        }
                        
                        bool check = true;
                        for (int x = 0; x < 10; x++) {
                            if (num[x] == -1) check = false;
                        }
                        if (check) {
                            int cnt = 0;
                            for (int x = 0; x < 10; x++) cnt += v[num[0]][x];
                            if (cnt != 3) check = false;
                            cnt = 0;
                            for (int x = 0; x < 10; x++) cnt += v[num[1]][x];
                            if (cnt != 3) check = false;
                            cnt = 0;
                            for (int x = 0; x < 10; x++) cnt += v[num[2]][x];
                            if (cnt != 3) check = false;
                        }

                        if (check) good = true;
                        if (good) {
                            for (int y = 0; y < 10; y++) {
                                tmp[y][0] = v[y][i];
                                tmp[y][1] = v[y][j];
                                tmp[y][2] = v[y][k];
                                tmp[y][3] = v[y][m];
                            }
                            
                            int left = 0;
                            for (int c = 4; c < 10; c++) {
                                while (left == i || left == j || left == k || left == m) left++;
                                for (int y = 0; y < 10; y++) {
                                    tmp[y][c] = v[y][left];
                                }
                                left++;
                            }
                            
                            v = tmp;
                        }
                    }
                }
            }
        }
        
        vector <pair <int, int>> order;
        for (int i = 0; i < 10; i++) {
            order.push_back({v[i][0] + 2 * v[i][1] + 4 * v[i][2] + 8 * v[i][3], i});
        }
        sort(order.begin(), order.end());

        tmp = v;
        for (int i = 0; i < 10; i++) {
            v[i] = tmp[order[i].second];
        }

        order.clear();
        for (int j = 4; j < 10; j++) {
            order.push_back({v[0][j] + 2 * v[1][j] + 4 * v[2][j], j});
        }
        sort(order.begin(), order.end());

        tmp = v;
        for (int j = 4; j < 10; j++) {
            for (int i = 0; i < 10; i++) {
                v[i][j] = tmp[i][order[j - 4].second];
            }
        }

        ll ans = 0, cur = 0;
        for (int i = 3; i < 10; i++) {
            for (int j = 4; j < 10; j++) {
                ans *= 2;;
                ans += v[i][j];
            }
        }
        cout << ans << endl;
    }
}

int main() {
    string name;
    cin >> name;
    if (name == "Algosia") algosia();
    else bajtek();
}