#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<string> s(n, string(n, '0'));
int x;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) s[i][j] = '1';
cout << "?\n";
for(int j = 0; j < n; j++) cout << s[j] << endl;
if (!(cin >> x)) break;
if(x == n * n) {
cout << "!\n";
for(int j = 0; j < n; j++) cout << s[j] << endl;
return 0;
}
for(int j = 0; j < n; j++) s[i][j] = '0';
}
vector<pair<int, int>> v;
for(int i = 0; i < n; i++) {
bool tr = false;
int l = -1;
int j = 0;
while(!tr && j < n - 2) {
s[i][j] = '1';
s[i][j + 1] = '1';
cout << "?\n";
for(int k = 0; k < n; k++) cout << s[k] << endl;
cin >> x;
if(x == 2 * n) {
s[i][j] = '0'; s[i][j + 1] = '0';
j += 2;
}
else if(x == n) {
tr = true; l = j;
}
else {
s[i][j] = '0';
s[i][j + 2] = '1';
cout << "?\n";
for(int k = 0; k < n; k++) cout << s[k] << endl;
cin >> x;
if(x == 2 * n) { tr = true; l = j; }
else if(x == n) { tr = true; l = j + 1; }
else {
s[i][j] = '1'; s[i][j + 1] = '0';
cout << "?\n";
for(int k = 0; k < n; k++) cout << s[k] << endl;
cin >> x;
if(x == 2 * n) { tr = true; l = j + 1; }
if(x == n) { tr = true; l = j; }
}
}
s[i][j] = '0'; s[i][j+1] = '0'; if(j+2 < n) s[i][j+2] = '0';
}
if (!tr) {
while (j < n) {
if (j == n - 1) {
l = j;
tr = true;
break;
}
s[i][j] = '1';
s[i][j + 1] = '1';
cout << "?\n";
for (int k = 0; k < n; k++) cout << s[k] << endl;
if (!(cin >> x)) break;
if (x == n) {
l = j;
tr = true;
} else if (x < 2 * n) {
s[i][j] = '0';
cout << "?\n";
for (int k = 0; k < n; k++) cout << s[k] << endl;
cin >> x;
if (x == n) l = j + 1;
else l = j;
tr = true;
} else {
j++;
}
s[i][j] = '0';
if (j + 1 < n) s[i][j + 1] = '0';
if (tr) break;
}
}
v.push_back({i, l});
}
for(int i = 0; i < n; i++) fill(s[i].begin(), s[i].end(), '0');
for(auto p : v) {
if(p.second != -1) s[p.first][p.second] = '1';
}
cout << "!\n";
for(int i = 0; i < n; i++) cout << s[i] << endl;
return 0;
}