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)

#include <iostream>
#include <vector>
#include <climits>
#include <algorithm>
#include <cmath>
#include <map>
#include <set>
#include <string>
#include <bitset>
#include <utility>
#include <numeric>
#include <queue>
#include <stack>
#include <iomanip>

using ll = long long;
using namespace std;

constexpr int MOD = 1e9 + 7;
constexpr ll MOD_LL = ll(1e9 + 7);

template<typename T>
T modpow(T a, T p, T mod) {
	T ret = 1;
	while( p ) {
		if( p & 1 ) {
			ret *= a;
			ret %= mod;
		}
		
		a *= a;
		a %= mod;
		p >>= 1;
	}
	
	return ret;
}

int main(void) {
	ll n;
	cin >> n;
	
	ll ans = modpow(10LL, n, MOD_LL);
	ans %= MOD_LL;
	ans -= modpow(9LL, n, MOD_LL);
	ans %= MOD_LL;
	ans -= modpow(9LL, n, MOD_LL);
	ans %= MOD_LL;
	ans += modpow(8LL, n, MOD_LL);
	ans %= MOD_LL;
	
	if( ans < 0 ) ans += MOD_LL;
	
	cout << ans << endl;
	
	return 0;
}