func_code_string: #include <bits/stdc++.h>   using namespace std;   int a[55][55];   int query(int xa, int ya, int xb, int yb) {     if (xa > xb || ya > yb) swap(xa, xb), swap(ya, yb);     cout <<  ?   << xa + 1 <<     << ya + 1 <<     << xb + 1 <<     << yb + 1          << endl;     int p;     cin >> p;     return p;   }   int h[2];   int main() {     ios_base::sync_with_stdio(false);     cin.tie(NULL);     int n;     cin >> n;     a[0][0] = 1, a[n - 1][n - 1] = 0;     for (int i = 0; i < n; i++) {       for (int j = i + 2; j < n; j += 2) {         int p = query(i, j - 2, i, j);         p ^= 1;         a[i][j] = p ^ a[i][j - 2];         p = query(j - 2, i, j, i);         p ^= 1;         a[j][i] = p ^ a[j - 2][i];       }       if (i < n - 1) {         int p = query(i, i, i + 1, i + 1);         p ^= 1;         a[i + 1][i + 1] = p ^ a[i][i];       }     }     a[0][1] = 0;     for (int i = 0; i < n; i++) {       if (i & 1) {         int p = query(i - 1, n - 2, i, n - 1);         p ^= 1;         a[i][n - 1] = a[i - 1][n - 2] ^ p;         for (int j = n - 3; j >= 0; j -= 2) {           int p = query(i, j, i, j + 2);           p ^= 1;           a[i][j] = a[i][j + 2] ^ p;         }       } else {         if (i) {           int p = query(i - 2, 1, i, 1);           p ^= 1;           a[i][1] = a[i - 2][1] ^ p;         }         for (int j = 3; j < n; j += 2) {           int p = query(i, j - 2, i, j);           p ^= 1;           a[i][j] = a[i][j - 2] ^ p;         }       }     }     int ind;     for (int i = 0; i < n - 2; i++) {       if (i % 2 == 0 && a[i + 2][i + 2] == 0 && a[i][i] == 1) {         ind = i;         break;       }     }     if (!(a[ind][ind] == a[ind][ind + 2]) ^         (a[ind][ind + 1] == a[ind + 1][ind + 2])) {       int p = query(ind, ind, ind + 1, ind + 2);       if (p) {         h[a[ind + 1][ind + 2]] = 1;         h[1 - a[ind + 1][ind + 2]] = 0;       } else {         h[a[ind + 1][ind + 2]] = 0;         h[1 - a[ind + 1][ind + 2]] = 1;       }     } else {       int p = query(ind, ind + 1, ind + 2, ind + 2);       if (p) {         h[a[ind][ind + 1]] = 0;         h[1 - a[ind][ind + 1]] = 1;       } else {         h[a[ind][ind + 1]] = 1;         h[1 - a[ind][ind + 1]] = 0;       }     }     cout <<  !  << endl;     for (int i = 0; i < n; i++) {       for (int j = 0; j < n; j++) {         if ((i + j) % 2) {           cout << h[a[i][j]];         } else {           cout << a[i][j];         }       }       cout << endl;     }     return 0;   }   