#include<cstdio>
using namespace std;
#define N 101
int a[N],b[N],c[N],d[N],n,tot;
void go(int i){
for(int j=1;j<=n;j++){//寻找放置皇后的位置
if(!b[j]&&!c[i+j]&&!d[i-j+n-1]){//寻找放置皇后的位置 //由于C++不能操作负数组,因此考虑加n-1
a[i]=j;//摆放皇后
b[j]=1;//宣布占领第j列
c[i+j]=1;//占领两个对角线
d[i-j+n-1]=1;
if(i==n) tot++;//n个皇后都放置好,一种情况
else go(i+1);//继续递归放置下一个皇后
b[j]=0;//递归返回即为回溯一步,当前皇后退出
c[i+j]=0;
d[i-j+n-1]=0;
}
}
}
int main(){
scanf("%d",&n);
go(1);
printf("%d\n",tot);
return 0;
}