#include <bits/stdc++.h>
using namespace std;
int main(int argc, char *argv[]) {
  int n, r;
  cin >> n;
  vector<vector<int> > a(n, vector<int>(n, -1)), b, *ans = &a;
  a[0][0] = 1;
  a[n - 1][n - 1] = 0;
  for (int i = 0; i < n; i += 2)
    for (int j = 0; j < n; j += 2)
      for (int ii = i; ii < n && ii <= i + 2; ii++)
        for (int jj = j; jj < n && jj <= j + 2; jj++) {
          if (ii - i + jj - j != 2) continue;
          if (a[ii][jj] >= 0) continue;
          cout << "? " << (i + 1) << ' ' << (j + 1) << ' ' << (ii + 1) << ' '
               << (jj + 1) << endl
               << flush;
          cin >> r;
          a[ii][jj] = a[i][j] ^ r ^ 1;
        }
  a[0][1] = 0;
  cout << "? 1 2 3 2" << endl << flush;
  cin >> r;
  a[2][1] = a[0][1] ^ r ^ 1;
  cout << "? 2 1 3 2" << endl << flush;
  cin >> r;
  a[1][0] = a[2][1] ^ r ^ 1;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      for (int ii = i; ii < n && ii <= i + 2; ii++)
        for (int jj = j; jj < n && jj <= j + 2; jj++) {
          if (ii - i + jj - j != 2 || a[ii][jj] >= 0) continue;
          cout << "? " << (i + 1) << ' ' << (j + 1) << ' ' << (ii + 1) << ' '
               << (jj + 1) << endl
               << flush;
          cin >> r;
          a[ii][jj] = a[i][j] ^ r ^ 1;
        }
  b = a;
  for (int i = 0; i < n; i++)
    for (int j = 0; j < n; j++)
      if ((i + j) % 2 == 1) b[i][j] ^= 1;
  vector<vector<int> > dp1(n * n, vector<int>(n * n)),
      dp2(n * n, vector<int>(n * n));
  bool done = false;
  for (int i = n - 1; i >= 0 && !done; i--)
    for (int j = n - 1; j >= 0 && !done; j--)
      for (int ii = i; ii < n && !done; ii++)
        for (int jj = j; jj < n && !done; jj++) {
          int d = abs(i - ii) + abs(j - jj);
          if (d == 0) {
            dp1[i * n + j][ii * n + jj] = dp2[i * n + j][ii * n + jj] = 1;
          } else if (d == 1) {
            dp1[i * n + j][ii * n + jj] = a[i][j] == a[ii][jj] ? 1 : 0;
            dp2[i * n + j][ii * n + jj] = b[i][j] == b[ii][jj] ? 1 : 0;
          } else {
            int s[4][4] = {
                {1, 0, -1, 0}, {1, 0, -0, -1}, {0, 1, -1, 0}, {0, 1, 0, -1}};
            for (int k = 0; k < 4; k++) {
              int x = i + s[k][0], y = j + s[k][1], xx = ii + s[k][2],
                  yy = jj + s[k][3];
              if (x < n && xx >= 0 && y < n && yy >= 0 && xx >= x && yy >= y) {
                if (a[i][j] == a[ii][jj] && dp1[x * n + y][xx * n + yy])
                  dp1[i * n + j][ii * n + jj] = 1;
                if (b[i][j] == b[ii][jj] && dp2[x * n + y][xx * n + yy])
                  dp2[i * n + j][ii * n + jj] = 1;
              }
            }
            if (dp1[i * n + j][ii * n + jj] != dp2[i * n + j][ii * n + jj]) {
              cout << "? " << (i + 1) << ' ' << (j + 1) << ' ' << (ii + 1)
                   << ' ' << (jj + 1) << endl
                   << flush;
              cin >> r;
              done = true;
              if (r ^ dp1[i * n + j][ii * n + jj] == 0)
                ans = &a;
              else
                ans = &b;
            }
          }
        }
  cout << '!' << endl << flush;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < n; j++) cout << (*ans)[i][j];
    cout << endl << flush;
  }
  return 0;
}
