/*递归会出现重复遍历的概况,比如,f(1)可能就会遍历x次 而用动态规划,就会好很多,因为计算过的数据存在数组里面,只需要取就好 极大节约了时间*/ #include <iostream> #include <vector> using namespace std; typedef long long ll; const int mod = 1e9+7; ll f(ll x) { if(x==0) return 0; vector<long long> dp(x+1,0); dp[1]=1; dp[2]=1; for(int i=3;i<=x;i++) { dp[i]=(dp[i-1]+dp[i-2])%mod; } return dp[x]; } int main() { ll k; cin>>k; cout<<f(k)<<endl; return 0; } // 64 位输出请用 printf("%lld")