#include<iostream>
using namespace std;
int map[8][8]={0};
int ct=0;
int safe_ab(int a,int b)
{
for(int i=0;i<8;i++)//行判断
{
if(map[a][i]==3)
{
return 0;
}
}
for(int i=0;i<8;i++)//列判断
{
if(map[i][b]==3)
{
return 0;
}
}
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)//对角线
{
if((i+j)==(a+b))
{
if(map[i][j]==3)
{
return 0;
}
}
}
for(int i=0;i<8;i++)
for(int j=0;j<8;j++)//对角线
{
if((i-j)==(a-b))
{
if(map[i][j]==3)
{
return 0;
}
}
}
return 1;
}
void dfs(int a,int b)
{
if(a==8)
{
ct++;
for(int i=0;i<8;i++)
{
for(int j=0;j<8;j++)
{
cout<<map[i][j]<<" ";
}
cout<<endl;
}
cout<<"========================================="<<endl;
return;
}
for(int i=0;i<8;i++)
{
if(safe_ab(a,i))
{
map[a][i]=3;
dfs(a+1,0);
map[a][i]=0;
}
}
}
int main()
{
dfs(0,0);
cout<<ct;
return 0;
}