#include <bits/stdc++.h>
using namespace std;
int n;
int ans[55][55];
string s;
int ask(int a, int b, int c, int d) {
  int x;
  cout << "? " << a << " " << b << " " << c << " " << d << endl;
  cin >> x;
  return x;
}
void dfs(int x, int y) {
  int p;
  if (x > 1 && y > 1 && ans[x - 1][y - 1] == 0) {
    p = ask(x - 1, y - 1, x, y);
    if (p)
      ans[x - 1][y - 1] = ans[x][y];
    else
      ans[x - 1][y - 1] = 3 - ans[x][y];
    dfs(x - 1, y - 1);
  }
  if (x < n && y < n && ans[x + 1][y + 1] == 0) {
    p = ask(x, y, x + 1, y + 1);
    if (p)
      ans[x + 1][y + 1] = ans[x][y];
    else
      ans[x + 1][y + 1] = 3 - ans[x][y];
    dfs(x + 1, y + 1);
  }
  if (x > 2 && ans[x - 2][y] == 0) {
    p = ask(x - 2, y, x, y);
    if (p)
      ans[x - 2][y] = ans[x][y];
    else
      ans[x - 2][y] = 3 - ans[x][y];
    dfs(x - 2, y);
  }
  if (x < n - 1 && ans[x + 2][y] == 0) {
    p = ask(x, y, x + 2, y);
    if (p)
      ans[x + 2][y] = ans[x][y];
    else
      ans[x + 2][y] = 3 - ans[x][y];
    dfs(x + 2, y);
  }
  if (y > 2 && ans[x][y - 2] == 0) {
    p = ask(x, y - 2, x, y);
    if (p)
      ans[x][y - 2] = ans[x][y];
    else
      ans[x][y - 2] = 3 - ans[x][y];
    dfs(x, y - 2);
  }
  if (y < n - 1 && ans[x][y + 2] == 0) {
    p = ask(x, y, x, y + 2);
    if (p)
      ans[x][y + 2] = ans[x][y];
    else
      ans[x][y + 2] = 3 - ans[x][y];
    dfs(x, y + 2);
  }
}
void out() {
  cout << "!" << endl;
  for (int i = 1; i <= n; i++) {
    s = "";
    for (int j = 1; j <= n; j++) s += char(ans[i][j] - 1 + '0');
    cout << s << endl;
  }
}
int main() {
  int p;
  scanf("%d", &n);
  ans[1][1] = 2;
  ans[n][n] = 1;
  dfs(1, 1);
  for (int i = 2; i < n; i++) {
    if (ans[i - 1][i - 1] != ans[i + 1][i + 1]) {
      p = ask(i - 1, i - 1, i + 1, i);
      if (p) {
        ans[i + 1][i] = ans[i - 1][i - 1];
        dfs(i + 1, i);
        break;
      } else {
        p = ask(i - 1, i, i + 1, i + 1);
        if (p) {
          ans[i - 1][i] = ans[i + 1][i + 1];
          dfs(i - 1, i);
          break;
        } else {
          p = ask(i - 1, i, i + 1, i);
          if (p)
            ans[i - 1][i] = ans[i + 1][i] = 3 - ans[i][i];
          else {
            ans[i + 1][i] = ans[i + 1][i + 1];
            ans[i - 1][i] = ans[i - 1][i - 1];
          }
          dfs(i - 1, i);
          break;
        }
      }
    }
  }
  out();
  return 0;
}
