1 #include<iostream>
 2 #include<cmath>
 3 using namespace std;
 4 int tot;
 5 int vis[1001];// 列
 6 int zd[1001];//左方向对角线
 7 int yd[1001];//右方向对角线
 8 int n;
 9 void f(int k)
10 {
11     if(k==n)
12     {
13         tot++;
14         return;
15     }
16     else
17     {
18         for(int j=1;j<=n;j++)
19         {
20             if(vis[j]==0&&zd[j+k]==0&&yd[k-j+n]==0)
21             {
22                 vis[j]=1;
23                 zd[j+k]=1;
24                 yd[k-j+n]=1;
25                 f(k+1);
26                 vis[j]=0;
27                 zd[j+k]=0;
28                 yd[k-j+n]=0;
29             }
30         }
31     }
32 }
33 int main()
34 {
35     
36     cin>>n;
37     f(0);// 一定是0,千万别是1 ,。。。。一位调试了1个小时的oier的忠告 
38     cout<<tot;
39     return 0;
40 }