#include <algorithm>
#include <cmath>
#include <cstdio>
#include <iostream>
#include <stack>
#include <string>
#include <vector>
using namespace std;
long long fun(int n) {
long long D[26];
D[1] = 0;
D[2] = 1;
for (int i = 3; i < 26; i++)
D[i] = (i - 1) * (D[i - 1] + D[i - 2]);
return D[n];
}
long long zuhe(int n, int x) // 在N人中选择M人进行错排序
{
long long ret = 1;
for (int i = 1; i <= x; i++)
ret = ret * (n - i + 1) / (i);
return ret;
}
int main() {
int n;
while (cin >> n && n) {
long long s = 0; // 后期数据较大,应选用long long作为其数据类型
if (n == 1)
s = 1;
else if (n == 2)
s = 1;
else {
for (int i = 1; i <= n / 2; i++)
s = s + fun(i) * zuhe(n, i);
s = s + 1;
}
cout << s << endl;
}
return 0;
}
01-27