func_code_string: #include <bits/stdc++.h>   using namespace std;   long long ksm(long long a, long long b) {     if (!b) return 1;     long long ns = ksm(a, b >> 1);     ns = ns * ns % 998244353;     if (b & 1) ns = ns * a % 998244353;     return ns;   }   int chk(int x1, int y1, int x2, int y2) {     cout <<  ?   << x1 <<     << y1 <<     << x2 <<     << y2 << endl;     fflush(stdout);     int r = 0;     cin >> r;     return r;   }   int a[55][55];   int main() {     int n;     cin >> n;     a[1][1] = 1;     for (int j = 3; j <= n; j++)       if (chk(1, j - 2, 1, j))         a[1][j] = a[1][j - 2];       else         a[1][j] = a[1][j - 2] ^ 1;     for (int i = 2; i <= n; i++)       for (int j = n; j >= 1; j--) {         if (i == n && j == n)           a[i][j] = 0;         else {           if (j >= 2)             if (chk(i - 1, j - 1, i, j))               a[i][j] = a[i - 1][j - 1];             else               a[i][j] = a[i - 1][j - 1] ^ 1;           else if (chk(i, j, i, j + 2))             a[i][j] = a[i][j + 2];           else             a[i][j] = a[i][j + 2] ^ 1;         }       }     int ed = 0;     for (int i = 1; i <= n; i += 2) {       if (a[i][i] == 1 && a[i + 2][i + 2] == 0) {         if (chk(i, i + 1, i + 2, i + 2))           ed = a[i][i + 1];         else if (chk(i, i, i + 1, i + 2))           ed = a[i + 1][i + 2] ^ 1;         else {           if (a[i][i + 1] == a[i + 1][i + 2])             ed = a[i][i + 1] ^ a[i][i + 2] ^ 1;           else if (a[i][i + 2] == 0)             ed = a[i + 1][i + 2];           else             ed = a[i][i + 1] ^ 1;         }         break;       }     }     cout <<  !  << endl;     for (int i = 1; i <= n; i++) {       for (int j = 1; j <= n; j++) {         if ((i + j) & 1) a[i][j] ^= ed;         cout << a[i][j];       }       cout << endl;     }     return 0;   }   