#include #include #include #include #include #include #include #include #include #include using namespace std; #define VV vector> #define MOD 1000000007 VV mul(VV const &M1,VV const &M2){ VV ans={{0,0},{0,0}}; ans[0][0]=((M1[0][0]*M2[0][0] % MOD)+(M1[0][1]*M2[1][0] % MOD)) % MOD; ans[0][1]=((M1[0][0]*M2[0][1] % MOD)+(M1[0][1]*M2[1][1] % MOD)) % MOD; ans[1][0]=((M1[1][0]*M2[0][0] % MOD)+(M1[1][1]*M2[1][0] % MOD)) % MOD; ans[1][1]=((M1[1][0]*M2[0][1] % MOD)+(M1[1][1]*M2[1][1] % MOD)) % MOD; return ans; } VV pow(VV const &A,long long int const &n){ VV ans; if(n==0){ return {{1,0},{0,1}}; } ans=pow(mul(A,A),n/2); if(n%2==1)ans=mul(A,ans); return ans; } int main(void){ VV A={{1,1},{1,0}}; VV ans; long long int n; cin>>n; ans=pow(A,n); std::cout<