#include <iostream>
#include <cmath>
using namespace std;
const int maxn=100;
int n,m[maxn],shash[maxn]={0},flag=0;
void que(int d)
{
if(d==n+1)
{
flag++;
return ;
}
for(int i=1;i<=n;i++)
{
if(shash[i]==0)
{
bool flag1=1;
for(int j=1;j<d;j++)
{
if(abs(d-j)==abs(i-m[j]))//判判断是否在同一条对角线上
{
flag1=0;
break;
}
}
if(flag1)
{
m[d]=i;
shash[i]=1;
que(d+1);
shash[i]=0;
}
}
}
}
int main()
{
cin>>n;
que(1);
cout<<flag<<endl;
return 0;
}