#include<iostream.h>
#include<stdio.h>
#define N 8
int queen[N][N];
int count=1; //用来统计总共有多少种算法
int queennumber=1; //用来计算是否达到了八个皇后
void createqueen(){ //创造棋盘
int i=0;
int j=0;
for(;i<N;i++){
for(j=0;j<N;j++)
queen[i][j]=0;}
}
void printqueen(){ //输出棋盘
int i=0;
int j=0;
for(;i<N;i++){
for(j=0;j<N;j++){
cout<<queen[i][j];
}
cout<<endl;
}
cout<<endl;
//getchar();
count++;
cout<<count-1<<endl;
}
bool checkqueen(int x,int y){ //更改棋局
for(int i=1;(x-i)>=0;i++)
{if(queen[x-i][y]==1)
return false;}
i=1;
while(x-i>=0&&y+i<N){
if(queen[x-i][y+i]==1)
return false;
i++;}
i=1;
while(x-i>=0&&y-i>=0){
if(queen[x-i][y-i]==1)
return false;
i++;}
return true;
}
void run(int x){
bool is=false;
for(int i=0;i<N;i++){
if(x<N)
is=checkqueen(x+1,i);
if(is==true){
queen[x+1][i]=1;
queennumber++;
if(queennumber==N)
printqueen();
run(x+1);
queennumber--;
queen[x+1][i]=0;
}
}
}
void main(){
for(int i=0;i<N;i++){
createqueen();
queen[0][i]=1;
queennumber=1;
run(0);
//getchar();
}
cout<<endl<<count-1<<endl;
}