#include<bits/stdc++.h>
#include<math.h>
#include<cmath>
using namespace std;
const int maxn=5050;
struct BigInt{
int a[maxn];
int len;
BigInt(){ len=1; memset(a,0,sizeof a); }
BigInt(char *s){
len=strlen(s);
int cnt=0;
for(int i=len-1;i>=0;i--) a[cnt++]=s[i]-'0';
}
int &operator[](int i){return a[i];}
BigInt(string s){
len=s.size();
int cnt=0;
for(int i=len-1;i>=0;i--) a[cnt++]=s[i]-'0';
}
BigInt& operator = (const BigInt &T){
len=T.len;
memset(a,0,sizeof(a));
for(int i=0;i<len;i++)
a[i]=T.a[i];
return *this;
}
void println(){
for(int i=len-1;i>=0;i--) printf("%d",a[i]);
puts("");
}
void print(){
for(int i=len-1;i>=0;i--) printf("%d",a[i]);
}
void flatten(int L){
len = L;
for(int i=0;i<len;i++)
a[i+1]+=a[i]/10,a[i]%=10;
for(;len>1&&!a[len-1];)
len--;
}
};
BigInt operator+(BigInt &a,BigInt &b){
BigInt c;
int len = max(a.len,b.len);
for(int i=0;i<len;i++)
c[i]+=a[i]+b[i];
c.flatten(len + 1);
return c;
}
BigInt f[5010];
int main() {
int n;
cin>>n;
f[1]=BigInt("1");
f[2]=BigInt("2");
for(int i=3;i<=n;i++){
f[i]=f[i-2]+f[i-1];
}
f[n].print();
return 0;
}