#include <bits/stdc++.h>
using namespace std;
int v[55][55], n;
int check(int x1, int y1, int x2, int y2, int eh) {
  int ans;
  cout << "? " << x1 << " " << y1 << " " << x2 << " " << y2 << "\n";
  cin >> ans;
  if (eh == 1)
    return 1 - ans;
  else
    return ans;
}
void printmat() {
  cout << "!\n";
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) cout << v[i][j];
    cout << "\n";
  }
}
int main() {
  cin >> n;
  v[1][1] = 1;
  v[n][n] = 0;
  for (int i = 3; i <= n; i += 2)
    v[1][i] = abs(v[1][i - 2] - check(1, i - 2, 1, i, 1));
  v[2][2] = abs(v[1][1] - check(1, 1, 2, 2, 1));
  for (int i = 4; i <= n; i += 2)
    v[2][i] = abs(v[2][i - 2] - check(2, i - 2, 2, i, 1));
  for (int i = 3; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if ((i + j) % 2 == 0 and !(i == n and j == n))
        v[i][j] = abs(v[i - 2][j] - check(i - 2, j, i, j, 1));
  v[1][2] = 1;
  for (int i = 4; i <= n; i += 2)
    v[1][i] = abs(v[1][i - 2] - check(1, i - 2, 1, i, 1));
  v[2][3] = abs(v[1][2] - check(1, 2, 2, 3, 1));
  v[2][1] = abs(v[2][3] - check(2, 1, 2, 3, 1));
  for (int i = 5; i <= n; i += 2)
    v[2][i] = abs(v[2][i - 2] - check(2, i - 2, 2, i, 1));
  for (int i = 3; i <= n; i++)
    for (int j = 1; j <= n; j++)
      if ((i + j) % 2 == 1)
        v[i][j] = abs(v[i - 2][j] - check(i - 2, j, i, j, 1));
  bool rev = false;
  for (int i = 1; i <= n - 2; i++)
    if (v[i][i] != v[i + 2][i + 2]) {
      if ((v[i][i] ^ v[i + 1][i + 1] ^ v[i + 1][i] ^ v[i + 1][i + 2]) == 0) {
        if ((check(i, i, i + 1, i + 2, 2)) ^ v[i][i] ^ v[i + 1][i + 2] == 0)
          rev = true;
      } else if ((check(i + 1, i, i + 2, i + 2, 2)) ^ v[i + 1][i] ^
                 v[i + 2][i + 2] == 0)
        rev = true;
      break;
    }
  if (rev == true)
    for (int i = 1; i <= n; i++)
      for (int j = 1; j <= n; j++)
        if ((i + j) % 2) v[i][j] = 1 - v[i][j];
  printmat();
  return 0;
}
