#include <bits/stdc++.h>
using namespace std;
const int mod = 1e9 + 7;
const int inf = 0x7f7f7f7f;
const int maxn = 1e6 + 5;
int n, x;
int g[55][55];
int dx[105], dy[105];
int main() {
  g[1][1] = 1;
  cin >> n;
  for (int i = 1; i <= n - 2; i++) {
    printf("? 1 %d 1 %d\n", i, i + 2);
    fflush(stdout);
    scanf("%d", &x);
    if (x)
      g[1][i + 2] = g[1][i];
    else
      g[1][i + 2] = 1 - g[1][i];
  }
  for (int i = 1; i <= n - 2; i += 2) {
    for (int j = 1; j <= n; j++) {
      if (i == n - 2 && j == n) continue;
      printf("? %d %d %d %d\n", i, j, i + 2, j);
      fflush(stdout);
      scanf("%d", &x);
      if (x)
        g[i + 2][j] = g[i][j];
      else
        g[i + 2][j] = 1 - g[i][j];
    }
    for (int j = 1; j <= n - 1; j++) {
      printf("? %d %d %d %d\n", i, j, i + 1, j + 1);
      fflush(stdout);
      scanf("%d", &x);
      if (x)
        g[i + 1][j + 1] = g[i][j];
      else
        g[i + 1][j + 1] = 1 - g[i][j];
    }
  }
  for (int i = 2; i <= n - 1; i += 2) {
    printf("? %d 1 %d 2\n", i, i + 1);
    fflush(stdout);
    scanf("%d", &x);
    if (x)
      g[i][1] = g[i + 1][2];
    else
      g[i][1] = 1 - g[i + 1][2];
  }
  for (int i = 1; i <= n; i++) {
    dx[i] = 1;
    dy[i] = i;
  }
  for (int i = 1; i <= n - 1; i++) {
    dx[i + n] = i + 1;
    dy[i + n] = n;
  }
  int f = 0;
  for (int i = 1; i <= 2 * n - 4; i++) {
    int a = 0;
    for (int j = i; j <= i + 3; j++) a ^= g[dx[j]][dy[j]];
    if (a == 0) {
      printf("? %d %d %d %d\n", dx[i], dy[i], dx[i + 3], dy[i + 3]);
      fflush(stdout);
      scanf("%d", &x);
      if ((x && g[dx[i]][dy[i]] != g[dx[i + 3]][dy[i + 3]]) ||
          (x == 0 && g[dx[i]][dy[i]] == g[dx[i + 3]][dy[i + 3]])) {
        f = 1;
      }
      break;
    }
  }
  if (f) {
    for (int i = 1; i <= n; i++) {
      for (int j = 1; j <= n; j++) {
        if ((i + j) & 1) g[i][j] = 1 - g[i][j];
      }
    }
  }
  printf("!\n");
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) printf("%d", g[i][j]);
    printf("\n");
  }
}
