#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define INF 0x3f3f3f3f #define MOD 1000000007 #define eps 1e-6 #define MAXN 210 #define MAXM 100 #define dd {cout<<"debug"<= l; i --) #define doe(i, x) for(i = 1; i <= x; i ++) int n; string C[MAXN][MAXN], ans[MAXN]; int temp[MAXN * 2]; string add_s(string a, string b) { int len_a = a.length(); int len_b = b.length(); int len_ans = 0; string ans = ""; mes(temp, 0); if (len_a > len_b) { for (int i = 1; i <= len_b; i ++) temp[len_ans ++] = (int)(a[len_a - i] - '0') + (int)(b[len_b - i] - '0'); for (int i = len_b + 1; i <= len_a; i ++) temp[len_ans ++] = (int)(a[len_a - i] - '0'); } else { for(int i = 1; i <= len_a; i ++) temp[len_ans ++] = (int)(b[len_b - i] - '0') + (int)(a[len_a - i] - '0'); for(int i = len_a + 1; i <= len_b; i ++) temp[len_ans ++] = (int)(b[len_b - i] - '0'); } int d = 0; for (int i = 0; i < len_ans; i ++) { temp[i] = temp[i] + d; d = temp[i] / 10; temp[i] %= 10; ans += (char)(temp[i] + '0'); } if(d) ans += (char)(d + '0'); reverse(ans.begin(), ans.end()); return ans; } string get_ans(int pos) { int len = pos / 2; string ans = "1"; if(!len) return ans; for(int i = 1; i <= len; i ++) ans = add_s(ans, C[pos - i][i]); return ans; } void init() { for (int i = 0; i < MAXN; i ++) { C[i][0] = '1'; C[i][i] = '1'; } for(int i = 1; i < MAXN; i ++) for(int j = 1; j < i; j ++) C[i][j] = add_s(C[i - 1][j - 1], C[i - 1][j]); ans[0] = "0"; for(int i = 1; i < MAXN; i ++) ans[i] = get_ans(i); } int main() { init(); while(scanf("%d", &n) != EOF) { cout << ans[n] << endl; } return 0; }