#include <bits/stdc++.h>
using namespace std;
long long read() {
  long long x = 0, f = 1;
  char c = getchar();
  while (c < '0' || c > '9') {
    if (c == '-') f = -1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = x * 10 + c - '0';
    c = getchar();
  }
  return x * f;
}
const int N = 51;
int a[N][N];
int res;
int q(int ax, int ay, int bx, int by) {
  cout << "? " << ax + 1 << ' ' << ay + 1 << ' ' << bx + 1 << ' ' << by + 1
       << endl;
  cin >> res;
  return res;
}
void work() {
  int n;
  cin >> n;
  a[0][0] = 1;
  a[2][1] = q(1, 0, 2, 1) ^ 1;
  a[0][1] = a[2][1] ^ q(0, 1, 2, 1) ^ 1;
  for (int i = 0; i < (n); i++)
    for (int j = 0; j < (n); j++) {
      if (i + j <= 1 || i == 2 && j == 1 || i == n - 1 && j == n - 1) continue;
      if (i == 0)
        a[i][j] = a[i][j - 2] ^ q(i, j - 2, i, j) ^ 1;
      else if (j == 0)
        a[i][j] = a[i - 2][j] ^ q(i - 2, j, i, j) ^ 1;
      else
        a[i][j] = a[i - 1][j - 1] ^ q(i - 1, j - 1, i, j) ^ 1;
    }
  int f = -1;
  for (int i = 0; i < (n - 1); i++) {
    for (int j = 0; j < (n - 1); j++) {
      if (i < n - 2) {
        if (a[i + 1][j] == a[i][j + 1] && a[i + 1][j + 1] == a[i + 2][j] &&
            (a[i][j] == a[i + 2][j + 1]) != (a[i][j + 1] == a[i + 1][j + 1]))
          continue;
        f = q(i, j, i + 2, j + 1) ^ (a[i][j] == a[i + 2][j + 1]);
        break;
      }
      if (j < n - 2) {
        if (a[i][j + 1] == a[i + 1][j] && a[i + 1][j + 1] == a[i][j + 2] &&
            (a[i][j] == a[i + 1][j + 2]) != (a[i + 1][j] == a[i + 1][j + 1]))
          continue;
        f = q(i, j, i + 1, j + 2) ^ (a[i][j] == a[i + 1][j + 2]);
        break;
      }
    }
    if (f >= 0) break;
  }
  if (f)
    for (int i = 0; i < (n); i++)
      for (int j = 0; j < (n); j++) a[i][j] ^= ((i + j) % 2);
  cout << "!" << endl;
  for (int i = 0; i < (n); i++) {
    for (int j = 0; j < (n); j++) cout << a[i][j];
    cout << endl;
  }
}
int main() { work(); }
