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 Rust (1.42.0) (judge verdict: Wrong Answer)

/**
 *    author : HikaruEgashira
 *    created: 09.13.2020 21.00
**/
use proconio::input;

fn mod_pow(a: i128, b: i128, mod_value: i128) -> i128 {
    (1..b).fold(a, |sum, _| (sum * a) % mod_value)
}

fn mod_mul(a: i128, b: i128, mod_value: i128) -> i128 {
    a * b % mod_value
}

fn sum(n: i128) -> i128 {
    (1..=n).sum()
}

fn main() {
    input! {
        n: i128,
    }

    let res = match n {
        1 => 0,
        2 => 2,
        n => {
            let mod_value = 10_i128.pow(9) + 7_i128;

            // 9, 1分を除く
            // (n - 2) ^ 10
            let without_zero_nine = mod_pow(10, n - 2_i128, mod_value);

            // 9, 1をいれる
            // without_zero_nine * ((without_zero_nine + 1) ^ 2) * 2
            mod_mul(
                mod_mul(without_zero_nine, 2, mod_value),
                sum(without_zero_nine + 1_i128),
                mod_value,
            )
        }
    };

    println!("{}", res);
}