#include <IOSTREAM.H>
#include <MATH.H>
#define LENGTH 8
int num=0;
int SuccessInsert(int (*a)[LENGTH],int x,int y)
{
for (int i=0;i<LENGTH;i++)
{
for (int j=0;j<LENGTH;j++)
{
if (a[i][j]==1&&(i==x||j==y||abs(x-i)==abs(y-j)))
return 0;
}
}
a[x][y]=1;
return 1;
}
void print(int (*a)[LENGTH])
{
for (int i=0;i<LENGTH;i++)
{
for (int j=0;j<LENGTH;j++)
{
cout<<a[i][j]<<" ";
}
cout<<endl;
}
cout<<++num<<endl;
}
void Back(int (*a)[LENGTH],int x,int count)
{
if(count==LENGTH)
{
print(a);return;
}
for (int j=0;j<LENGTH;j++)
{
for (int k=0;k<LENGTH;k++)
a[x][k]=0;
if (SuccessInsert(a,x,j))
{
Back(a,x+1,count+1);
}
}
for (int k=0;k<LENGTH;k++)
a[x][k]=0;
}
int main()
{
int a[LENGTH][LENGTH]={0};
Back(a,0,0);
cout<<num<<endl;
print(a);
return 0;
}