#include <bits/stdc++.h>
using namespace std;
int n, mat[60][60];
int query(int xa, int ya, int xb, int yb) {
  cout << "? " << xa << ' ' << ya << ' ' << xb << ' ' << yb << '\n';
  cout.flush();
  int ans;
  cin >> ans;
  return ans;
}
void solve(int a, int b, int c, int d) {
  int x = query(a, b, c, d);
  if (x)
    mat[c][d] = mat[a][b];
  else
    mat[c][d] = mat[a][b] ^ 1;
}
void change() {
  for (int i = 1; i <= n; i++)
    for (int j = 1; j <= n; j++) {
      if ((i + j) % 2) mat[i][j] ^= 1;
    }
}
void solve2(int a, int b, int c, int d) {
  int x = query(a, b, c, d);
  if (x && mat[a][b] != mat[c][d])
    change();
  else if (!x && mat[a][b] == mat[c][d])
    change();
}
void extinde() {
  mat[1][2] = 1;
  for (int i = 4; i <= n; i += 2) {
    solve(1, i - 2, 1, i);
  }
  for (int i = 2; i <= n; i++) {
    for (int j = 2 + (i % 2 == 0); j <= n; j += 2) {
      solve(i - 1, j - 1, i, j);
    }
    if (i % 2 == 0) {
      int x = query(i, 1, i, 3);
      if (x)
        mat[i][1] = mat[i][3];
      else
        mat[i][1] = mat[i][3] ^ 1;
    }
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin >> n;
  mat[1][1] = 1;
  for (int i = 3; i <= n; i += 2) {
    solve(1, i - 2, 1, i);
  }
  for (int i = 3; i <= n; i += 2) {
    for (int j = 1; j <= n; j += 2) {
      if (i == n && j == n) break;
      solve(i - 2, j, i, j);
    }
  }
  for (int i = 2; i <= n; i += 2) {
    for (int j = 2; j <= n; j += 2) {
      solve(i - 1, j - 1, i, j);
    }
  }
  extinde();
  int ok = 0;
  for (int i = 4; i <= n && !ok; i++) {
    if (mat[1][i] ^ mat[1][i - 1] ^ mat[1][i - 2] ^ mat[1][i - 3] == 0) {
      solve2(1, i - 3, 1, i);
      ok = 1;
    }
  }
  for (int i = 4; i <= n && !ok; i++) {
    if (mat[i][n] ^ mat[i - 1][n] ^ mat[i - 2][n] ^ mat[i - 3][n] == 0) {
      solve2(i - 3, n, i, n);
      ok = 1;
    }
  }
  if (!ok) {
    if (mat[1][n - 2] ^ mat[1][n - 1] ^ mat[1][n] ^ mat[2][n] == 0) {
      solve2(1, n - 2, 2, n);
    } else {
      solve2(1, n - 1, 3, n);
    }
  }
  cout << "!\n";
  for (int i = 1; i <= n; i++, cout << '\n')
    for (int j = 1; j <= n; j++) cout << mat[i][j];
  cout.flush();
  return 0;
}
