func_code_string: #include <bits/stdc++.h>   using namespace std;   int a[123][123], b[123][123], f1[54][54][54][54], f2[54][54][54][54];   int n;   void getans(int i1, int j1, int i2, int j2) {     int i, j, t;     printf( ? %d %d %d %d n , i1, j1, i2, j2);     fflush(stdout);     scanf( %d , &t);     if (t == f1[i1][j1][i2][j2]) {       printf( ! n ), fflush(stdout);       for (i = 1; i <= n; i++) {         for (j = 1; j <= n; j++) printf( %d , (1 + a[i][j]) / 2);         printf(  n );       }     } else {       printf( ! n ), fflush(stdout);       for (i = 1; i <= n; i++) {         for (j = 1; j <= n; j++) printf( %d , (1 + b[i][j]) / 2);         printf(  n );       }     }     exit(0);   }   int main() {     int i, j, i1, i2, j1, j2, t, j3, i3;     scanf( %d , &n);     a[1][1] = 1, a[n][n] = -1;     for (i = 1; i <= n; i++)       for (j = 2 - (i % 2); j <= n; j += 2) {         if (!a[i][j]) {           if (a[i - 1][j - 1]) {             printf( ? %d %d %d %d n , i - 1, j - 1, i, j);             fflush(stdout);             scanf( %d , &t);             if (!t)               a[i][j] = -a[i - 1][j - 1];             else               a[i][j] = a[i - 1][j - 1];             continue;           }           if (i > j) {             printf( ? %d %d %d %d n , i - 2, j, i, j);             fflush(stdout);             scanf( %d , &t);             if (!t)               a[i][j] = -a[i - 2][j];             else               a[i][j] = a[i - 2][j];             continue;           } else {             printf( ? %d %d %d %d n , i, j - 2, i, j);             fflush(stdout);             scanf( %d , &t);             if (!t)               a[i][j] = -a[i][j - 2];             else               a[i][j] = a[i][j - 2];             continue;           }         }       }     a[1][2] = 1;     for (i = 1; i <= n; i++)       for (j = 3 - (i % 2); j <= n; j += 2) {         if (!a[i][j]) {           if (a[i - 1][j - 1]) {             printf( ? %d %d %d %d n , i - 1, j - 1, i, j);             fflush(stdout);             scanf( %d , &t);             if (!t)               a[i][j] = -a[i - 1][j - 1];             else               a[i][j] = a[i - 1][j - 1];             continue;           }           if (i > j - 1) {             printf( ? %d %d %d %d n , i - 2, j, i, j);             fflush(stdout);             scanf( %d , &t);             if (!t)               a[i][j] = -a[i - 2][j];             else               a[i][j] = a[i - 2][j];             continue;           } else {             printf( ? %d %d %d %d n , i, j - 2, i, j);             fflush(stdout);             scanf( %d , &t);             if (!t)               a[i][j] = -a[i][j - 2];             else               a[i][j] = a[i][j - 2];             continue;           }         }       }     printf( ? %d %d %d %d n , 2, 1, 3, 2);     fflush(stdout);     scanf( %d , &t);     if (!t)       a[2][1] = -a[3][2];     else       a[2][1] = a[3][2];     j = 1;     for (i = 4; i <= n; i += 2) {       printf( ? %d %d %d %d n , i - 2, j, i, j);       fflush(stdout);       scanf( %d , &t);       if (!t)         a[i][j] = -a[i - 2][j];       else         a[i][j] = a[i - 2][j];       continue;     }     for (i = 1; i <= n; i++)       for (j = 1; j <= n; j++) b[i][j] = (((i + j) & 1) ? -a[i][j] : a[i][j]);     for (i3 = 0; i3 < n; i3++)       for (j3 = 0; j3 < n; j3++) {         for (i2 = i3 + 1; i2 <= n; i2++)           for (j2 = j3 + 1; j2 <= n; j2++) {             i1 = i2 - i3, j1 = j2 - j3;             if (i1 == i2 && j1 == j2)               f1[i1][j1][i2][j2] = 1, f2[i1][j1][i2][j2] = 1;             else if (i2 + j2 - i1 - j1 == 1) {               f1[i1][j1][i2][j2] = (a[i1][j1] == a[i2][j2]);               f2[i1][j1][i2][j2] = (b[i1][j1] == b[i2][j2]);             } else {               if (a[i1][j1] == a[i2][j2] &&                   (f1[i1 + 1][j1][i2 - 1][j2] || f1[i1][j1 + 1][i2][j2 - 1] ||                    f1[i1 + 1][j1][i2][j2 - 1] || f1[i1][j1 + 1][i2 - 1][j2]))                 f1[i1][j1][i2][j2] = 1;               else                 f1[i1][j1][i2][j2] = 0;               if (b[i1][j1] == b[i2][j2] &&                   (f2[i1 + 1][j1][i2 - 1][j2] || f2[i1][j1 + 1][i2][j2 - 1] ||                    f2[i1 + 1][j1][i2][j2 - 1] || f2[i1][j1 + 1][i2 - 1][j2]))                 f2[i1][j1][i2][j2] = 1;               else                 f2[i1][j1][i2][j2] = 0;               if (f1[i1][j1][i2][j2] != f2[i1][j1][i2][j2])                 getans(i1, j1, i2, j2);             }           }       }   }   