#include <iostream>
#include <iomanip> 
#define N 20001  // 項數
#define W 248  // 位數
using namespace std;

int main() {

	int i, j;
	long long **ptr = NULL;
	ptr = new long long*[N];
	for (i = 0; i < N; i++) {
		ptr[i] = new long long[W];
	}


	for (i = 0; i < N; i++) {
		for (j = 0; j < W; j++) {
			ptr[i][j] = 0;
		}
	}
	ptr[0][0] = 0;  //可省略
	ptr[1][0] = 1;

	//___________________________________

	int tem = 0;
	for (i = 2; i < N; i++) {
		for (j = 0; j < W; j++) {
			ptr[i][j] = ptr[i - 1][j] + ptr[i - 2][j] + tem;
			if (ptr[i][j] >= 1000000000000000000) {  //處理進未必須要有=
				tem = ptr[i][j] / 1000000000000000000;
				ptr[i][j] = ptr[i][j] % 1000000000000000000;
			}
			else
				tem = 0;
		}
	}

//	Output_______________________________________
	int n;
	while (cin >> n) {


		for (i = n, j = W - 1; j >= 0; j--)
			if (ptr[i][j] != 0)   // 由大而小紀錄第一個不為0  j的位置
				break;
		cout << ptr[i][j];     //先印出第一項不用補零!!
		for (j=j-1; j >= 0; j--) {
		  cout << setw(18) << setfill('0') << ptr[i][j];//第二項後在數字前面補零!!!
		}
		cout << endl;
	}
	delete[] ptr;  //陣列用完記憶體記得要釋放!!
	return 0;
}