#include using namespace std; typedef long double ld; typedef long long ll; typedef unsigned long long ull; #define endl "\n" #define MP make_pair #define FOR(i,a,b) for(int i=(a);i<=(b);i++) #define FORR(x,arr) for(auto& x:arr) #define VI vector #define PII pair #define ALL(x) (x).begin(), (x).end() const int INF=1<<30; const ll LINF=1LL<<60 ; const ll mod=1e9+7 ; templatebool chmax(T &a, const T &b) { if (abool chmin(T &a, const T &b) { if (b=(const mint a){return (x >= a.x)? 1: 0;} bool operator<(const mint a){return !(*this>=a);} bool operator>(const mint a){return (x > a.x)? 1:0;} bool operator<=(const mint a){return !(*this>a);} mint& operator+=(const mint a) { if ((x += a.x) >= mod) x -= mod; return *this; } mint& operator-=(const mint a) { if ((x += mod-a.x) >= mod) x -= mod; return *this; } mint& operator*=(const mint a) { (x *= a.x) %= mod; return *this; } mint operator+(const mint a) const { mint res(*this); return res+=a; } mint operator-(const mint a) const { mint res(*this); return res-=a; } mint operator*(const mint a) const { mint res(*this); return res*=a; } mint pow(ll t) const { if (!t) return 1; mint a = pow(t>>1); a *= a; //2 square if (t&1) a *= *this; return a; } // for prime mod mint inv() const { return pow(mod-2); } mint& operator/=(const mint a) { return (*this) *= a.inv(); } mint operator/(const mint a) const { mint res(*this); return res/=a; } }; //here below is Matrix library. template using Matrix = vector< vector >; template void init_mat(Matrix &A, int h, int w){ A.resize(h, vector(w,0)); } template Matrix dot_mat(Matrix A, Matrix B){ Matrix C(A.size(), vector(B[0].size())); for(int i=0; i Matrix pow_mat(Matrix A, ll n){ Matrix B(A.size(), vector(A.size())); for(int i=0; i>= 1; } return B; } //test int main(){ ll n; cin >> n; Matrix A,B; init_mat(A,6,6); init_mat(B,6,1); B[0][0] = mint(1); FOR(i,0,5) A[0][i] = mint(1)/mint(6); FOR(i,1,5) A[i][i-1] = mint(1); auto ans = dot_mat(pow_mat(A,n), B); cout << ans[0][0].x << endl; return 0; }