/* * Author: * Indestinee * Date: * 2016/05/14 */ #include #include #include #include #include #include #include #include #include using namespace std; const int maxn = 1000, base = 10000; #define len d[0] class bignum{ private: int d[maxn]; void clear(){ memset( d , 0 , sizeof d ); } public: bignum(int x=0){ clear(); do{ d[++len]=x % base; x /= base; }while( x ); } void out(string s="",char a = '\n'){ printf( "%d" , d[len] ); for( int i = len - 1 ; i ; i -- ) printf( "%04d" , d[i] ); putchar( a ); } friend bignum operator + ( const bignum &a , const bignum &b ){ bignum ret; ret.len = max( a.len , b.len ); int x = 0; for( int i = 1 ; i <= ret.len ; i ++ ){ x = x + a.d[i] + b.d[i]; ret.d[i] = x % base; x /= base; } while( x ){ ret.d[++ret.len] = x % base; x /= base; } return ret; } }f[6000]; int n; int main(){ // freopen( "B.in" , "r" , stdin ); // freopen( "B.out" , "w" , stdout ); f[0] = bignum(1); f[1] = bignum(1); f[2] = bignum(2); for( int i = 3 ; i < 6000 ; i ++ ) f[i] = f[i-1] + f[i-2]; while( scanf( "%d" , &n ) != EOF ){ if( n == 0 ){ puts( "" ); continue; } f[n].out(); } return 0; }