#include<bits/stdc++.h>
using namespace std;
string he(string s1,string s2){
int a[2500],b[2500],c[2500]={0};
string r;
//逆序
for(int i=0;i<s1.size();i++) a[i]=s1[s1.size()-1-i]-'0';
for(int i=0;i<s2.size();i++) b[i]=s2[s2.size()-1-i]-'0';
//算相加的长度
int len=max(s1.size(),s2.size());
//相加
for(int i=0;i<len;i++){
c[i]=a[i]+b[i];
if(c[i]>=10){
c[i+1]+=c[i]/10;
c[i]%=10;
}
}
//判断第len位是不是0
if(c[len]!=0) len++;
//倒序输出
for(int i=len-1;i>=0;i--){
r=r+(char)(c[i]+'0');
}
return r;
}
string ji(string s){
string r;
int a[2500],c[2500]={0};
for(int i=0;i<s.size();i++){
a[i]=s[s.size()-1-i]-'0';
}
int len=s.size();
for(int i=0;i<len;i++){
c[i]=a[i]*2;
if(c[i]>=10){
c[i+1]=c[i+1]+c[i]/10;
c[i]=c[i]%10;
}
}
if(c[len]!=0) len++;
for(int i=len-1;i>=0;i--){
r=r+(char)(c[i]+'0');
}
return r;
}
int main(){
long long n;
string x,y,z;
cin>>n;
x="1";
y="2";
if(n==1) cout<<x;
else if(n==2) cout<<y;
else{
for(int i=3;i<=n;i++){
z=he(ji(y),x);
x=y;
y=z;
}
cout<<z;
}
return 0;
}
/**************************************************************
Problem: 1369
User: hulaoshi
Language: C++
Result: Wrong Answer
****************************************************************/