#include<bits/stdc++.h>
using namespace std;
int a[10][10],c=0,g[1001],s=0;
void print(){
for(int i=1; i<=8; i++)
cout<<g[i];
cout<<endl;
}
bool check(int x,int y){
for(int i=1; i<=8; i++)
if(a[i][y]==1) return false;
for(int i=1; i<=8; i++)
for(int j=1; j<=8; j++)
if(i-j==x-y&&a[i][j]==1)
return false;
for(int i=1; i<=8; i++)
for(int j=1; j<=8; j++)
if(i+j==x+y&&a[i][j]==1)
return false;
return true;
}
void dfs(int,int);
int main(){
int n;
cin>>n;
for(int i=1; i<=n; i++){
int b;
cin>>b;
dfs(1,b);
}
return 0;
}
void dfs(int r,int k){
if(r==9){
s++;
if(s==k)
print();
}
for(int j=1; j<=8; j++){
if(check(r,j)){
g[r]=j;
a[r][j]=1;
dfs(r+1,k);
a[r][j]=0;
}
}
}
#include<bits/stdc++.h>
using namespace std;
int a[10][10],c=0;
void print(){
cout<<"NO. "<<c<<endl;
for(int i=1; i<=8; i++){
for(int j=1; j<=8; j++)
cout<<a[j][i]<<' ';
cout<<endl;
}}
bool check(int x,int y){
for(int i=1; i<=8; i++)
if(a[i][y]==1) return false;
for(int i=1; i<=8; i++)
for(int j=1; j<=8; j++)
if(i-j==x-y&&a[i][j]==1)
return false;
for(int i=1; i<=8; i++)
for(int j=1; j<=8; j++)
if(i+j==x+y&&a[i][j]==1)
return false;
return true;
}
void dfs(int r){
if(r==9){
c++;
print();
return;
}
for(int j=1; j<=8; j++){
if(check(r,j)){
a[r][j]=1;
dfs(r+1);
a[r][j]=0;
}
}
}
int main()
{
dfs(1);
return 0;
}