#include <bits/stdc++.h>
using namespace std;
double PI = 3.14159265358979323846;
int t = 9999;
int get(vector<vector<int> > &v, int x, int y) {
  if (x > v.size() - 1) {
    t += 1;
    return t;
  }
  if (y > v.size() - 1) {
    t += 1;
    return t;
  }
  return v[x][y];
}
int main() {
  int n;
  cin >> n;
  int x;
  vector<vector<int> > v(n + 1);
  for (int i = 0; i < n + 1; i++) v[i].resize(n + 1);
  v[1][1] = 1;
  v[n][n] = 0;
  for (int i = 3; i <= n; i += 2) {
    cout << "? " << 1 << " " << i - 2 << " " << 1 << " " << i << endl;
    cin >> x;
    if (x == 1) {
      v[1][i] = v[1][i - 2];
    } else
      v[1][i] = 1 - v[1][i - 2];
  }
  for (int i = 3; i <= n; i += 2) {
    cout << "? " << i - 2 << " " << 1 << " " << i << " " << 1 << endl;
    cin >> x;
    if (x == 1) {
      v[i][1] = v[i - 2][1];
    } else
      v[i][1] = 1 - v[i - 2][1];
  }
  for (int i = 2; i <= n; i += 1) {
    for (int j = 2; j <= n; j += 1) {
      if ((i + j) % 2 == 1) continue;
      if (i == n && j == n) break;
      cout << "? " << i - 1 << " " << j - 1 << " " << i << " " << j << endl;
      cin >> x;
      if (x == 1)
        v[i][j] = v[i - 1][j - 1];
      else
        v[i][j] = 1 - v[i - 1][j - 1];
    }
  }
  v[1][2] = 3;
  cout << "? " << 1 << " " << 2 << " " << 2 << " " << 3 << endl;
  cin >> x;
  v[2][3] = (x == 1) ? v[1][2] : 7 - v[1][2];
  cout << "? " << 2 << " " << 1 << " " << 2 << " " << 3 << endl;
  cin >> x;
  v[2][1] = (x == 1) ? v[2][3] : 7 - v[2][3];
  for (int i = 4; i <= n; i += 2) {
    cout << "? " << 1 << " " << i - 2 << " " << 1 << " " << i << endl;
    cin >> x;
    v[1][i] = (x == 1) ? v[1][i - 2] : 7 - v[1][i - 2];
  }
  for (int i = 4; i <= n; i += 2) {
    cout << "? " << i - 2 << " " << 1 << " " << i << " " << 1 << endl;
    cin >> x;
    v[i][1] = (x == 1) ? v[i - 2][1] : 7 - v[i - 2][1];
  }
  for (int i = 2; i <= n; i++) {
    for (int j = 2; j <= n; j++) {
      if ((i + j) % 2 == 0) continue;
      if (i == 2 && j == 3) continue;
      cout << "? " << i - 1 << " " << j - 1 << " " << i << " " << j << endl;
      cin >> x;
      v[i][j] = (x == 1) ? v[i - 1][j - 1] : 7 - v[i - 1][j - 1];
    }
  }
  for (int i = 1; i <= n; i++) {
    for (int j = 1; j <= n; j++) {
      int aa = -1;
      int bb = -1;
      if (get(v, i, j) == get(v, i + 2, j)) {
        if (get(v, i + 1, j) == get(v, i + 3, j)) {
          aa = i + 3;
          bb = j;
        } else if (get(v, i + 1, j) == get(v, i + 2, j + 1)) {
          aa = i + 2;
          bb = j + 1;
        }
      } else {
        if (get(v, i + 1, j) != get(v, i + 3, j) && i + 3 <= n && j <= n) {
          aa = i + 3;
          bb = j;
        } else if (get(v, i + 1, j) != get(v, i + 2, j + 1) && i + 2 <= n &&
                   j + 1 <= n) {
          aa = i + 2;
          bb = j + 1;
        }
      }
      if (get(v, i, j) == get(v, i, j + 2)) {
        if (get(v, i, j + 1) == get(v, i, j + 3)) {
          aa = i;
          bb = j + 3;
        } else if (get(v, i, j + 1) == get(v, i + 1, j + 2)) {
          aa = i + 1;
          bb = j + 2;
        }
      } else {
        if (get(v, i, j + 1) != get(v, i, j + 3) && i + 0 <= n && j + 3 <= n) {
          aa = i;
          bb = j + 3;
        } else if (get(v, i, j + 1) != get(v, i + 1, j + 2) && i + 1 <= n &&
                   j + 2 <= n) {
          aa = i + 1;
          bb = j + 2;
        }
      }
      if (get(v, i, j) == get(v, i + 2, j)) {
        if (get(v, i + 1, j) == get(v, i + 1, j + 2)) {
          aa = i + 1;
          bb = j + 2;
        }
        if (get(v, i + 1, j) == get(v, i + 2, j + 1)) {
          aa = i + 2;
          bb = j + 1;
        }
        if (get(v, i, j + 1) == get(v, i + 1, j + 2)) {
          aa = i + 1;
          bb = j + 2;
        }
        if (get(v, i, j + 1) == get(v, i + 2, j + 1)) {
          aa = i + 2;
          bb = j + 1;
        }
      } else {
        if (get(v, i + 1, j) != get(v, i + 1, j + 2) && i + 1 <= n &&
            j + 2 <= n) {
          aa = i + 1;
          bb = j + 2;
        }
        if (get(v, i + 1, j) != get(v, i + 2, j + 1) && i + 2 <= n &&
            j + 1 <= n) {
          aa = i + 2;
          bb = j + 1;
        }
        if (get(v, i, j + 1) != get(v, i + 1, j + 2) && i + 1 <= n &&
            j + 2 <= n) {
          aa = i + 1;
          bb = j + 2;
        }
        if (get(v, i, j + 1) != get(v, i + 2, j + 1) && i + 2 <= n &&
            j + 1 <= n) {
          aa = i + 2;
          bb = j + 1;
        }
      }
      if (aa != -1 && bb != -1) {
        cout << "? " << i << " " << j << " " << aa << " " << bb << endl;
        cin >> x;
        map<int, int> mm;
        if (v[i][j] <= 1) {
          mm[v[aa][bb]] = (x == 1) ? v[i][j] : 1 - v[i][j];
          mm[7 - v[aa][bb]] = 1 - mm[v[aa][bb]];
        } else {
          mm[v[i][j]] = (x == 1) ? v[aa][bb] : 1 - v[aa][bb];
          mm[7 - v[i][j]] = 1 - mm[v[i][j]];
        }
        mm[0] = 0;
        mm[1] = 1;
        cout << "!\n";
        for (int ii = 1; ii <= n; ii++) {
          for (int jj = 1; jj <= n; jj++) {
            cout << mm[v[ii][jj]];
          }
          cout << endl;
        }
        return 0;
      }
    }
  }
  return 0;
}
