#include <bits/stdc++.h>
using namespace std;
int n, a[55][55], ans[55][55], dx[2] = {0, 1}, dy[2] = {1, 0};
void dfs(int x, int y) {
  int dx[4] = {0, 2, 0, 1}, dy[4] = {2, 0, -2, 1};
  for (int i = 0; i <= 3; i++) {
    int cx = x + dx[i], cy = y + dy[i];
    if (cx > 0 && cx <= n && cy > 0 && cy <= n && a[cx][cy] == -1) {
      if (i == 2)
        printf("? %d %d %d %d\n", cx, cy, x, y);
      else
        printf("? %d %d %d %d\n", x, y, cx, cy);
      fflush(stdout);
      int res;
      scanf("%d", &res);
      if (res == -1) exit(0);
      a[cx][cy] = a[x][y] ^ res ^ 1;
      dfs(cx, cy);
    }
  }
}
void getAns(int x, int y) {
  int dx[8] = {-2, -1, 0, 1, 2, 1, 0, -1}, dy[8] = {0, 1, 2, 1, 0, -1, -2, -1};
  for (int i = 0; i <= 7; i++) {
    int cx = x + dx[i], cy = y + dy[i];
    if (cx > 0 && cy > 0 && cx <= n && cy <= n && ans[cx][cy] == -1) {
      ans[cx][cy] = ans[x][y] ^ a[x][y] ^ a[cx][cy];
      getAns(cx, cy);
    }
  }
}
int main() {
  memset(a, -1, sizeof a);
  scanf("%d", &n);
  a[1][1] = 1;
  a[n][n] = 0;
  a[1][2] = 0;
  dfs(1, 1);
  dfs(1, 2);
  memset(ans, -1, sizeof ans);
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if ((i + j) % 2 == 0) ans[i][j] = a[i][j];
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++)
      for (int k = 0; k <= 7; k++) {
        int dx1 = dx[k & 1], dx2 = dx[k >> 1 & 1], dx3 = dx[k >> 2 & 1],
            dy1 = dy[k & 1], dy2 = dy[k >> 1 & 1], dy3 = dy[k >> 2 & 1],
            xt = i + dx1 + dx2 + dx3, yt = j + dy1 + dy2 + dy3;
        if (xt <= n && yt <= n &&
            (a[i][j] ^ a[i + dx1][j + dy1] ^ a[i + dx1 + dx2][j + dy1 + dy2] ^
             a[i + dx1 + dx2 + dx3][j + dy1 + dy2 + dy3]) == 0) {
          printf("? %d %d %d %d\n", i, j, xt, yt);
          fflush(stdout);
          int res;
          scanf("%d", &res);
          if (res == -1) return 0;
          if (i + j & 1) {
            ans[i][j] = ans[xt][yt] ^ res ^ 1;
            getAns(i, j);
          } else {
            ans[xt][yt] = ans[i][j] ^ res ^ 1;
            getAns(xt, yt);
          }
          printf("!\n");
          for (int i = 1; i <= n; i++) {
            for (int j = 1; j <= n; j++) printf("%d", ans[i][j]);
            printf("\n");
          }
          return 0;
        }
      }
}
