//pC
#include<bits/stdc++.h>
using namespace std;
#define LL long long
const int maxn = 1000+10;
int n, ans=1e9, kk=0;
string s[maxn];
int cat[maxn][maxn];
int run(){
cout<<"?"<<endl;
for(int i=0; i<n; i++) cout<<s[i]<<endl;
int a; cin>>a;
return a;
}
signed main(){
ios_base::sync_with_stdio(0); cin.tie(0);
cin>>n;
for(int i=0; i<n; i++) s[i]=string(n, '0');
s[0][0]='1';
cat[0][0]=1;
for(int i=1; i<n; i++){
s[0][i]='1';
int num=run();
if(num == n or num == 2*n) cat[0][i]=cat[0][0];
else cat[0][i]=cat[0][0]^1;
s[0][i]='0';
}
s[0][0]='0';
for(int i=0; i<n; i++){
s[0][i]='1';
for(int j=1; j<n; j++){
s[j][i]='1';
int num=run();
if(num == n or num == 2*n) cat[j][i]=cat[0][i];
else cat[j][i]=cat[0][i]^1;
s[j][i]='0';
}
s[0][i]='0';
}
/*
for(int i=0; i<n; i++) s[i]=string(n, '0');
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
cout<<cat[i][j]<<" ";
}
cout<<"\n";
}*/
//-----
for(int i=0; i<n; i++) s[i]=string(n, '0');
for(int i=0; i<n; i++)
for(int j=0; j<n; j++){
if(cat[i][j]==1){
s[i][j]='1';
break;
}
}
if(run()==n*n){
cout<<"!"<<endl;
for(int i=0; i<n; i++) cout<<s[i]<<endl;
return 0;
}
//-----
for(int i=0; i<n; i++) s[i]=string(n, '0');
for(int i=0; i<n; i++)
for(int j=0; j<n; j++){
if(cat[i][j]==0){
s[i][j]='1';
break;
}
}
if(run()==n*n){
cout<<"!"<<endl;
for(int i=0; i<n; i++) cout<<s[i]<<endl;
return 0;
}
//-----
for(int i=0; i<n; i++) s[i]=string(n, '0');
for(int j=0; j<n; j++)
for(int i=0; i<n; i++){
if(cat[i][j]==1){
s[i][j]='1';
break;
}
}
if(run()==n*n){
cout<<"!"<<endl;
for(int i=0; i<n; i++) cout<<s[i]<<endl;
return 0;
}
//-----
for(int i=0; i<n; i++) s[i]=string(n, '0');
for(int j=0; j<n; j++)
for(int i=0; i<n; i++){
if(cat[i][j]==0){
s[i][j]='1';
break;
}
}
if(run()==n*n){
cout<<"!"<<endl;
for(int i=0; i<n; i++) cout<<s[i]<<endl;
return 0;
}
return 0;
}