#include<iostream>
//不仅递归的返回值是有用的,递归的模拟过程也是有用的
using namespace std;
int n,cnt;//全局变量初始为0
void dfs(int k){
if(k==n)cnt++;//该方案可以到达对应的台阶,数量++
else if(k>n) return ;
//递归的边缘条件,不在调用自身!
dfs(k+1);dfs(k+2);
//两者跳台阶的方式:一格/两格
}
int main(){
cin>>n;//k带代表当前在第几节台阶
dfs(0);//当前是第0级台阶
//递归就是是调用自身的过程,不一定要返回结果(深度优先搜索dfs)
//模拟各种路线走法的过程就行
cout<<cnt;
}