#include<stdio.h>

int fib(int a);
int fib_arr(int a, int *arr);

/**
 * 有一只兔子,从出生后第3个月起每个月都生一只兔子,
 * 小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
*/
int main(int argc, char const *argv[])
{
    int num = 0;
    int array[] = {-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
    -1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,
    -1,-1,-1,-1,-1,-1};
    while (scanf("%d", &num) != EOF)
    {
        printf("%d\n", fib_arr(num, array) );
//         printf("%d\n", fib(num) );
    }
    return 0;
}

int fib(int a){
    if (a == 0)
        return 0;
    else if (a == 1)
        return 1;
    else if(a == 2)
        return 1;
    else
        return fib(a-1) + fib(a-2);
}

int fib_arr(int a, int *arr){
    if (a == 0){
        arr[a] = 0;
        return 0;
    }
    else if (a == 1){
        arr[a] = 1;
        return 1;
    }
    else if(a == 2){
        arr[a] = 1;
        return 1;
    }
    else{
        if (arr[a] != -1)
        {
            return arr[a];
        }
        return arr[a] = fib(a-1) + fib(a-2);
    }

}