救命啊
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define rep(i,a,b) for(int i = a;i <= b;i ++)
#define rrep(i,a,b) for(int i = a;i >= b;i --)
int read(){
int x = 0,f = 1;
char ch = getchar();
while(!isdigit(ch)){
if(ch == '-') f = -1;
ch = getchar();
}
while(isdigit(ch)){
x = x * 10 + ch - '0';
ch = getchar();
}
return x * f;
}
const int mod = 1e9 + 7;
struct S{
int v[1001];
}a[5002];
int l = -1;
void pls(int c,int x,int y){
int l1 = 0;
int l2 = 0;
while(a[x].v[l1]) l1 ++;
while(a[y].v[l2]) l2 ++;
l = max(l1,l2);
rep(i,0,l - 1){
a[c].v[i] = a[x].v[i] + a[y].v[i];
a[c].v[i + 1] = a[c].v[i] / 10;
a[c].v[i] %= 10;
}
if(a[c].v[l]) l ++;
return;
}
signed main(){
int n = read();
a[1].v[0] = 1;
a[2].v[0] = 2;
rep(i,3,n){
pls(i,i - 1,i - 2);
}
l += 5;
while(!a[n].v[l]) l --;
rrep(i,l - 1,0) cout << a[n].v[i];
return 0;
}