#include<bits/stdc++.h>
using namespace std;
int x[15];
int sum,n;
int pd(int k){
for(int i = 1; i < k; i++){
//行差和列差相同的时候再同一条45度斜线上
if(abs(k-i)==abs(x[k]-x[i]))
return 0;
//是否再同一列
if(x[k]==x[i])
return 0;
}
return 1;
}
bool check(int s){
//搜索完毕,sum++
if(s>n) sum++;
else return 0;
return 1;
}
void dfs(int s){
//如果本次搜素完毕就返回
if(check(s)) return;
//遍历n行列
for(int i = 1; i <= n; i++){
//第s个皇后放的列数
x[s] = i;
//判断是否能放这步
if(pd(s)) dfs(s+1);
continue;
}
}
int main(){
//输入皇后个数
cin>>n;
//从第一个皇后开始深搜
dfs(1);
cout<<sum<<endl;
return 0;
}