#include <bits/stdc++.h>
using namespace std;
int a[55][55];
int query(int xa, int ya, int xb, int yb) {
  if (xa > xb || ya > yb) swap(xa, xb), swap(ya, yb);
  cout << "? " << xa + 1 << " " << ya + 1 << " " << xb + 1 << " " << yb + 1
       << endl;
  int p;
  cin >> p;
  return p;
}
int h[2];
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n;
  cin >> n;
  a[0][0] = 1, a[n - 1][n - 1] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = i + 2; j < n; j += 2) {
      int p = query(i, j - 2, i, j);
      p ^= 1;
      a[i][j] = p ^ a[i][j - 2];
      p = query(j - 2, i, j, i);
      p ^= 1;
      a[j][i] = p ^ a[j - 2][i];
    }
    if (i < n - 1) {
      int p = query(i, i, i + 1, i + 1);
      p ^= 1;
      a[i + 1][i + 1] = p ^ a[i][i];
    }
  }
  a[0][1] = 0;
  for (int i = 0; i < n; i++) {
    if (i & 1) {
      int p = query(i - 1, n - 2, i, n - 1);
      p ^= 1;
      a[i][n - 1] = a[i - 1][n - 2] ^ p;
      for (int j = n - 3; j >= 0; j -= 2) {
        int p = query(i, j, i, j + 2);
        p ^= 1;
        a[i][j] = a[i][j + 2] ^ p;
      }
    } else {
      if (i) {
        int p = query(i - 2, 1, i, 1);
        p ^= 1;
        a[i][1] = a[i - 2][1] ^ p;
      }
      for (int j = 3; j < n; j += 2) {
        int p = query(i, j - 2, i, j);
        p ^= 1;
        a[i][j] = a[i][j - 2] ^ p;
      }
    }
  }
  int ind;
  for (int i = 0; i < n - 2; i++) {
    if (i % 2 == 0 && a[i + 2][i + 2] == 0 && a[i][i] == 1) {
      ind = i;
      break;
    }
  }
  if (!(a[ind][ind] == a[ind][ind + 2]) ^
      (a[ind][ind + 1] == a[ind + 1][ind + 2])) {
    int p = query(ind, ind, ind + 1, ind + 2);
    if (p) {
      h[a[ind + 1][ind + 2]] = 1;
      h[1 - a[ind + 1][ind + 2]] = 0;
    } else {
      h[a[ind + 1][ind + 2]] = 0;
      h[1 - a[ind + 1][ind + 2]] = 1;
    }
  } else {
    int p = query(ind, ind + 1, ind + 2, ind + 2);
    if (p) {
      h[a[ind][ind + 1]] = 0;
      h[1 - a[ind][ind + 1]] = 1;
    } else {
      h[a[ind][ind + 1]] = 1;
      h[1 - a[ind][ind + 1]] = 0;
    }
  }
  cout << "!" << endl;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) {
      if ((i + j) % 2) {
        cout << h[a[i][j]];
      } else {
        cout << a[i][j];
      }
    }
    cout << endl;
  }
  return 0;
}
