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 <bits/stdc++.h> 
#define lb lower_bound 
#define ub upper_bound 
#define sqr(x) (x)*(x) 
#define lowbit(x) (x)&(-x) 
#define mem(a,x) memset(a,x,sizeof(a));
using namespace std; 
typedef long long ll;

const ll mo = 1e9+7;

ll po(ll a,ll b,ll p){
	ll ans = 1;
	while(b){
		if(b&1){
			ans *= a;
			ans %= p;
		}
		b /= 2;
		a *= a;
		a %= p;
	}
	return ans;
}

int main(){
	ll n;
	scanf("%lld",&n);
	if(n==1) puts("0");
	else if(n==2) puts("2");
	else{
		ll ans = po(10,n,mo);
		ans -= po(9,n,mo);
		ans += mo;
		ans %= mo;
		ans -= po(9,n,mo);
		ans += mo;
		ans %= mo; 
		ans += po(8,n,mo);
		ans %= mo;
		printf("%lld\n",ans);
	}
}