#pragma GCC optimize ("O3") #pragma GCC target ("avx") #include "bits/stdc++.h" // define macro "/D__MAI" using namespace std; typedef long long int ll; #define debugv(v) printf("L%d %s => ",__LINE__,#v);for(auto e:v){cout< ",__LINE__,#m);for(int x=0;x<(w);x++){cout<<(m)[x]<<" ";}cout< ostream& operator <<(ostream &o, const pair p) { o << "(" << p.first << ":" << p.second << ")"; return o; } ll solve_MLE(int n) { vector> dp(n + 4); dp[1][1] = 1; // 1jump で 1step 登る.次は 1jump は使えない. dp[2][2] = 1; // 2jump で 2step 登る.次は 2jump は使えない. dp[3][3] = 1; // 3jump で 3step 登る.次は 3jump は使えない. for (int i = 1; i < n; ++i) { // 1jumpする. dp[i + 1][1] = (dp[i + 1][1] + (dp[i][2] + dp[i][3])) % MD; // 2jumpする. dp[i + 2][2] = (dp[i + 2][2] + (dp[i][1] + dp[i][3])) % MD; // 3jumpする. dp[i + 3][3] = (dp[i + 3][3] + (dp[i][1] + dp[i][2])) % MD; } return (dp[n][1] + dp[n][2] + dp[n][3]) % MD; } int main() { int n; cin >> n; cout << solve_MLE(n) << endl; }