#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
#define maxn 25
using namespace std;
inline int read()
{
int x=0,f=1; char ch=getchar();
while(ch>'9'||ch<'0'){
if(ch=='-') f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9'){
x=(x<<3)+(x<<1)+(ch^48);
ch=getchar();
}
return x*f;
}
int n,vis[maxn],ans;
void dfs(int x){
for(int i=1;i<=n;i++){
if(vis[i]==0&&i!=x){
vis[i]=1;
if(x==n){
ans++; vis[i]=0; return;
}else dfs(x+1);
vis[i]=0;
}
}
}
int main()
{
memset(vis,1,sizeof(vis));
n=read(); for(int i=1;i<=n;i++) vis[i]=0;
dfs(1);
cout<<ans;
return 0;
}