Problem:
Score : 300 points

Problem Statement

How many integer sequences A_1,A_2,\ldots,A_N of length N satisfy all of the following conditions?

0 \leq A_i \leq 9

There exists some i such that A_i=0 holds.

There exists some i such that A_i=9 holds.

The answer can be very large, so output it modulo 10^9 + 7.

Constraints

1 \leq N \leq 10^6

N is an integer.

Input

Input is given from Standard Input in the following format:

N

Output

Print the answer modulo 10^9 + 7.

Sample Input 1

2

Sample Output 1

2

Two sequences \{0,9\} and \{9,0\} satisfy all conditions.

Sample Input 2

1

Sample Output 2

0

Sample Input 3

869121

Sample Output 3

2511445

Solution in C++ (GCC 9.2.1) (judge verdict: Accepted)

#ifdef __GNUG__
#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG // ArrayOutofBounds
#else
#include <iostream>
#include <algorithm>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#endif
#define rep(i, N) for (int i = 0; i < N; i++) //制御変数iを用いてN回転
using namespace std;
using ll = long long;
//0:上 1:左 2:下 3:右
const int di[] = { -1, 0, 1, 0};
const int dj[] = { 0, -1, 0, 1};

const int mod = 1e9 + 7;

int main() {
    int N;
    cin >> N;
    ll total = 1, each = 1, inter = 1;
    rep(i, N) {
        /* あらゆる数列 */
        total *= 10;
        total %= mod;
        /* 0がない数列 or 9がない数列 */
        each *= 9;
        each %= mod;
        /* 0も9もない数列 */
        inter *= 8;
        inter %= mod;
    }
    each = (each * 2) % mod;
    ll ans = total + mod;
    ans = (ans - each) % mod;
    ans = (ans + inter) % mod;
    cout << ans << endl;
    return 0;
}