#include
#include
int n;
int st[10000]={0};
int arr[10]={0};
int cnt=0;
int ret=0;
int m;
int count[10000];
;
void dfs(int x){
int sum=0;
int flag=0;
int temp=0;
m=n;
for(int i=1;i<=n+1;i++){
arr[i]=i;
}
if(x>n){
sum=0;
for(int i=1;i<=n;i++){
temp=st[i];
count[i]=temp;
}
/*for(int i=1;i<=n;i++){
printf("%d ",st[i]);
}*/
//printf("\n");
for(int i=1;i<=m;){
if(count[i]==1){//有空格出现
flag=1;
arr[i]=arr[i]*10+arr[i+1];
for(int k=i+1;k<=m;k++){
arr[k]=arr[k+1];
count[k-1]=count[k];
}
m--;
}
else{i++;}
}
//for(int i=1;i<=m;i++){
// printf("%d ",count[i]);
//}
//printf("\n");
//for(int i=1;i<=m+1;i++){
//printf("%d ",arr[i]);
//}
//printf("\n");
if(m>0){ if(flag==0){
for(int i=0;i<=n;i++){
if(count[i]==2){sum=arr[i]+arr[i+1];arr[i+1]=sum;}
else if(count[i]==3){sum=arr[i]-arr[i+1];arr[i+1]=sum;}
}
}
else if(flag==1){
for(int i=1;i<=m;i++){
if(count[i]==2){
sum=arr[i]+arr[i+1];
arr[i+1]=sum;
}
else if(count[i]==3){
sum=arr[i]-arr[i+1];
arr[i+1]=sum;
}
else sum=arr[i];
}
}}
else if(m==0)sum=arr[1];
for(int j=1;j<=n+1;j++){
arr[j]=j;
}
// printf("%d",sum);
//printf("\n");
if(sum==0){ret++;}
//printf("\n");
return ;
}
st[x]=1;//1表示空格
dfs(x+1);
st[x]=0;//回溯
st[x]=2;//2表示+
dfs(x+1);
st[x]=0;
st[x]=3;//3表示-
dfs(x+1);
st[x]=0;
}
int main(){
scanf("%d",&n);
n=n-1;
dfs(1);
printf("%d",ret);
return 0;}