#include <iostream>
#include <vector>
using namespace std;
const int MOD = 1e9+7;
int main() {
int n;cin>>n;
vector<long long> dp_odd(n+1,0);
vector<long long> dp_eve(n+1,0);
//初始条件
dp_eve[0] = 1; //0级台阶,偶数步到达
if(n>=1) dp_odd[1] = 1; //左脚直接跳1级
//动态规划
for(int i=2;i<=n;i++)
{
dp_odd[i] = (dp_eve[i-1]+dp_odd[i-2]) % MOD;
dp_eve[i] = (dp_eve[i-2]+dp_odd[i-2]) % MOD;
}
// 总方案数:奇数步或偶数步到达n级
long long result = (dp_odd[n] + dp_eve[n]) % MOD;
cout << result << endl;
return 0;
}
// 64 位输出请用 printf("%lld")

京公网安备 11010502036488号