#include #include #include #include #include #include #include #include #include #include static const int MOD = 1000000007; using ll = int64_t; using namespace std; template constexpr T INF = ::numeric_limits::max()/32*15+208; template T extgcd(T a, T b, T &x ,T &y){ for (T u = y = 1, v = x = 0; a; ) { ll q = b/a; swap(x -= q*u, u); swap(y -= q*v, v); swap(b -= q*a, a); } return b; } template T mod_inv(T x, T m){ T s, t; extgcd(x, m, s, t); return (m+s)% m; } template T pow_ (T x, T n, T M){ uint64_t u = 1, xx = x; while (n > 0){ if (n&1) u = u * xx % M; xx = xx * xx % M; n >>= 1; } return static_cast(u); }; int main() { ll n; cin >> n; ll k = 1 + mod_inv(3, MOD); (k *= pow_((ll)10, n, (ll)MOD)) %= MOD; cout << (k + MOD - mod_inv(3, MOD)) % MOD << "\n"; return 0; }