/*
注意输出时是列优先输出
否则会WA
*/
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
int queen[10],ncase=1;
bool legal(int depth,int n)
{
int i;
for(i=1;i<depth;i++)
if(n==queen[i]||((int)fabs((double)n-(double)queen[i])==depth-i))
return false;
return true;
}
void print()
{
cout<<"No. "<<(ncase++)<<endl;
int i,j,map[9][9];
memset(map,0,sizeof(map));
for(i=1;i<=8;i++)
map[i][queen[i]]=1;
for(i=1;i<=8;i++)
{
for(j=1;j<=8;j++)
{
if(j==1)cout<<map[j][i];
else cout<<" "<<map[j][i];
}
cout<<endl;
}
}
void DFS(int depth)
{
if(depth>8) return;
int i;
for(i=1;i<=8;i++)
{
if(legal(depth,i))
{
queen[depth]=i;
DFS(depth+1);
if(depth==8)
print();
}
}
}
int main()
{
// freopen("output.txt","w",stdout);
DFS(1);
return 0;
}