#include #include #include #include #include #include #include #include #include #include #include #include using namespace std; const int inf = 0x3f3f3f3f; const int N = 200 + 10; const int M = N * N; struct BigInt { const static int mod = 10000; const static int DLEN = 4; int a[1000], len; BigInt() { memset(a, 0, sizeof(a)); len = 1; } BigInt(int v) { memset(a, 0, sizeof(a)); len = 0; do { a[len++] = v%mod; v /= mod; }while(v); } BigInt operator + (const BigInt &b) const { BigInt res; res.len = max(len, b.len); for(int i = 0; i <= res.len; ++i) res.a[i] = 0; for(int i = 0; i < res.len; ++i) { res.a[i] += ((i < len) ? a[i] : 0) + ((i < b.len) ? b.a[i] : 0); res.a[i+1] += res.a[i] / mod; res.a[i] %= mod; } if(res.a[res.len] > 0) res.len++; return res; } void output() { printf("%d", a[len-1]); for(int i = len-2; i >= 0; --i) printf("%04d", a[i]); printf("\n"); } }dp[N]; void init() { dp[0] = BigInt(1); dp[1] = BigInt(1); for(int i = 2; i < N; ++i) dp[i] = dp[i-1] + dp[i-2]; //for(int i = 0; i < N; ++i) dp[i].output(); } int main() { #ifdef LOCAL freopen("in", "r", stdin); #endif init(); int n; while(~scanf("%d", &n)) { if(n == 0) { puts(""); continue; } dp[n].output(); } return 0; }