#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");
  }
}
