#include using namespace std; #define FOR(i,l,r) for(int i = (int) (l);i < (int) (r);i++) template bool chmax(T& a,const T& b){ return a < b ? (a = b,true) : false; } template bool chmin(T& a,const T& b){ return b < a ? (a = b,true) : false; } typedef long long ll; ll N; const ll MOD = 1e9 + 7,MOD2 = 2e9 + 16; void mat_mul(vector< vector >& a,vector< vector >& b,ll mod) { vector< vector > res(a.size(),vector(b.front().size())); FOR(i,0,res.size()) FOR(j,0,res.front().size()){ FOR(k,0,a.front().size()){ (res [i] [j] += a [i] [k] * b [k] [j]) %= mod; } } a.swap(res); } ll fib(ll x,ll mod) { vector< vector > p{{1,0}}; vector< vector > q{{1,1},{1,0}}; x--; while(x){ if(x & 1) mat_mul(p,q,mod); mat_mul(q,q,mod); x >>= 1; } return p [0] [0]; } int main() { scanf("%lld",&N); if(N == 0){ puts("0"); } else{ printf("%lld\n",fib(fib(N,MOD2),MOD)); } return 0; }