#include<bits/stdc++.h>
using namespace std;
#include<bits/stdc++.h>
using namespace std;
const int N=10;
int n,ans,pos[N];//pos下标表示行,数据表示列号
bool l[N],d1[2*N],d2[2*N];
int a[N][N];
void dfs(int x){
if (x>n){
ans++;
cout<<"No. "<<ans<<"\n";
memset(a,0,sizeof(a));
for (int i=1;i<=n;i++)
a[pos[i]][i]=1;//由于一本通上的题目要求,改了一下行列
for (int i=1;i<=n;i++){
for (int j=1;j<=n;j++)
cout<<a[i][j]<<" ";
cout<<"\n";
}
return ;
}
for (int y=1;y<=n;y++)
if (!l[y]&&!d1[x+y]&&!d2[x-y+n]){
pos[x]=y;
l[y]=d1[x+y]=d2[x-y+n]=true;
dfs(x+1);
l[y]=d1[x+y]=d2[x-y+n]=false;
}
}
int main(){
n=8;
dfs(1);
return 0;
}