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 Kotlin (1.3.71) (judge verdict: Wrong Answer)

import java.util.*
import kotlin.math.acos
import kotlin.math.cos
import kotlin.math.round
import kotlin.math.sin

fun main(args: Array<String>) {
    val n = readLong()
    val mod = 1000000007L

    var ans = (10L.powMod(n, mod) + 8L.powMod(n, mod) - 9L.powMod(n, mod) - 9L.powMod(n, mod)) % mod
    println(ans)
}

// read
fun readString() = readLine()!!
fun readInt() = readLine()!!.toInt()
fun readLong() = readLine()!!.toLong()
fun readStringList() = readLine()!!.split(" ")
fun readIntList() = readLine()!!.split(" ").map(String::toInt)
fun readLongList() = readLine()!!.split(" ").map(String::toLong)

fun Long.powMod(k: Long, mod: Long): Long {
    var r = 1L
    var n = this
    var kk = k
    while (kk > 0) {
        if (kk and 1 == 1L) {
            r = (r * n) % mod
        }
        n = (n * n) % mod
        kk = kk shr 1
    }
    return r
}