#include<stdio.h>
#include<iostream>
using namespace std;
int n,ans;
int vis[10];//vis[i]:第i行有一个皇后在vis[i]列
int check(int r,int c)
{
for(int i=1;i<=r;i++)
{
if(vis[i]==c) return false;//同列
if(vis[i]-c==r-i||vis[i]-c==i-r) return false;//同对角线
}
return true;
}
void dfs(int r)
{
if(r>n) {
ans++;
return;
}
for(int c=1;c<=n;c++)
{
if(check(r,c)){
vis[r]=c;
dfs(r+1);
vis[r]=0;
}
}
}
int main(){
cin>>n;
ans = 0;
dfs(1);
cout<<ans<<endl;
return 0;
}