#include <stdio.h>
long long c(int, int);
long long f(int);
int main()
{
int n, m, i;
long long num, sort, res;
while (scanf("%d", &n) != EOF && n != 0)
{
if ( n < 0 || n > 25)
break;
/* 如果n < 4,那么都只能有全部答对才能让他过关 */
if (n < 4)
printf("1\n");
else
{
res = 0;
/* 判断猜错女生的数量 */
for (i = 2; i <= n/2; i++)
{
num = c(n, i);
sort = f(i);
res += num * sort;
}
res += 1;
printf("%lld\n", res);
}
}
return 0;
}
/* 求组合数 */
long long c(int n, int m)
{
long long denom = 1, numer = 1, fac;
int i;
if (n < m)
return 1;
for (i = 0; i < m; i++)
{
numer *= (n - i);
denom *= (m - i);
}
return numer/denom;
}
/* 求n个数的错排 */
long long f(int n)
{
long long pre_res = 0, res = 1, temp;
int i;
for (i = 3; i <= n; i++)
{
temp = res;
res = (i-1) * (pre_res + res);
pre_res = temp;
}
if (n == 1)
return pre_res;
else
return res;
}