#include<iostream>
using namespace std;
//递归 
int fabonacci(int n){
	if(n==1||n==2)
		return n;
	return fabonacci(n-1)+fabonacci(n-2);
} 
//递归的优化,用数组记忆中间冗余计算的数据 
int f[101];
int fabonacci2(int n){
	if(f[n]!=-1)
		return f[n];
	else{
		if(n==1||n==2)
			return n;
		else{
			return fabonacci2(n-1)+fabonacci2(n-2);
		}
	}
}
//动态规划 
int dp[101];
int fabonacci3(int n){
	dp[1]=1;
	dp[2]=2;
	if(n==1||n==2){
		return n;
	}
	else{
		for(int i=3;i<101;i++)
			dp[i]=dp[i-1]+dp[i-2];
	}
	return dp[n];
}
int main()
{
	int n;
	for(int i=0;i<101;i++)
		f[i]=-1;
	while(scanf("%d",&n)!=EOF){
		printf("%d\n",fabonacci3(n));
	}
}