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: Accepted)

#[allow(unused_imports)] use proconio::{input, marker::{Bytes, Chars, Usize1, Isize1}};
#[allow(unused_imports)] use std::cmp::{min, max};
#[allow(unused_imports)] use superslice::Ext as _;

#[proconio::fastout]
fn main() {
	input! {
		n: usize,
	}

	let mut count9 = 9usize;
	let mut count8 = 8usize;
	let mut count10 = 10usize;
	for _i in 1..n {
		count9 *= 9;
		count8 *= 8;
		count10 *= 10;

		if count8 > 1000000007 || count8 > 1000000007 || count8 > 1000000007 {
			count8 %= 1000000007;
			count9 %= 1000000007;
			count10 %= 1000000007;
		}
	}

	//println!("{}, {}, {}", count10, count9, count8);
	let ans = (count10 + 1000000007 * 2 - (count9 * 2 - count8)) % 1000000007;

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