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>
using namespace std;

#define pb push_back
#define mp make_pair
#define f1 first
#define s2 second

#define fastio ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0);
#define debug(x...) cerr << "[" << #x << "]: " << x << "\n";

typedef long long ll;
typedef long double ld;
typedef pair<int, int> ii;
typedef pair<ll, ll> pl;

ld const PI = 4*atan((ld)1);

ll const mod = 1e9 + 7;

ll add(ll a, ll b)
{
	return (a + b) % mod;
}

ll sub(ll a, ll b)
{
	return (a - b + mod) % mod;
}

ll mul(ll a, ll b)
{
	return (a * b) % mod;
}

ll fpow(ll x, ll y)
{
	ll res = 1;
	while (y)
	{
		if (y & 1) res = mul(res, x);
		x = mul(x, x);
		y /= 2;
	}
	return res;
}

int main()
{
	fastio;

	int n;
	cin >> n;

	if (n == 1)
	{
		cout << 0 << '\n';
	}
	else
	{
		ll a = fpow(10, n);
		ll b = fpow(9, n);
		ll c = fpow(8, n);

		a = sub(a, b);
		a = sub(a, b);
		a = add(a, c);
		cout <<a << '\n';
	}

	return 0;
}