func_code_string: #include <bits/stdc++.h>   using namespace std;   const int N = 55;   int v[N][N], x[N << 1], y[N << 1], n, m, q;   int main() {     scanf( %d , &n);     v[1][1] = 1;     v[1][2] = v[n][n] = 0;     m = n * 2 - 4;     for (int i = 3; i <= n; i += 2) {       printf( ? %d %d %d %d n , i - 2, 1, i, 1);       fflush(stdout);       scanf( %d , &q);       v[i][1] = q ^ 1 ^ v[i - 2][1];       printf( ? %d %d %d %d n , i - 2, 2, i, 2);       fflush(stdout);       scanf( %d , &q);       v[i][2] = q ^ 1 ^ v[i - 2][2];     }     for (int i = 2; i <= n; i += 2) {       printf( ? %d %d %d %d n , i, 1, i + 1, 2);       fflush(stdout);       scanf( %d , &q);       v[i][1] = q ^ 1 ^ v[i + 1][2];       printf( ? %d %d %d %d n , i - 1, 1, i, 2);       fflush(stdout);       scanf( %d , &q);       v[i][2] = q ^ 1 ^ v[i - 1][1];     }     for (int i = 1; i <= n; ++i) {       for (int j = 3; j <= n; ++j) {         printf( ? %d %d %d %d n , i, j - 2, i, j);         fflush(stdout);         scanf( %d , &q);         v[i][j] = q ^ 1 ^ v[i][j - 2];       }     }     for (int i = 1; i <= n; ++i) x[i] = i, y[i] = 1;     for (int i = n + 1; i < (n << 1); ++i) x[i] = n, y[i] = i + 1 - n;     for (int i = 1; i <= m; ++i) {       q = 0;       for (int j = 0; j < 4; ++j) q ^= v[x[i + j]][y[i + j]];       if (q == 0) {         printf( ? %d %d %d %d n , x[i], y[i], x[i + 3], y[i + 3]);         fflush(stdout);         scanf( %d , &q);         if (v[x[i]][y[i]] ^ v[x[i + 3]][y[i + 3]] ^ q) break;         for (int j = 1; j <= n; ++j) {           for (int k = 1; k <= n; ++k) {             if ((j + k) % 2 == 0) continue;             v[j][k] ^= 1;           }         }         break;       }     }     printf( ! n );     for (int i = 1; i <= n; ++i) {       for (int j = 1; j <= n; ++j) printf( %d , v[i][j]);       printf(  n );     }   }   