#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));
}
}