#include <stdio.h>
#include <stdlib.h>
long long c(long long n,int i)
{
int j;
long long s=n,n1=1,k1=1;
if(i==0)return 1;
if(i==1)return n;
for(j=i;j>=1;j--){
n1=n1*s;
s--;
k1=k1*j;
}
return n1/k1;
}
int main()
{
int i;
long long s[15],n;
s[1]=0;
s[2]=1;
for(i=3;i<=14;i++){
s[i]=(i-1)*(s[i-1]+s[i-2]);
}
while(1){
scanf("%lld",&n);
if(n==0)break;
if(n==1||n==2||n==3){
printf("1\n");
continue;
}
int k;
long long sum=0;
k=n/2;
for(i=k;i>=1;i--){
sum=sum+c(n,i)*s[i];//缺一种没有认错的情况
}
// printf("%lld,,\n",c(25,12));
printf("%lld\n",sum+1);
}
return 0;
}
考察错排公式,