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 Haskell (GHC 8.8.3) (judge verdict: Accepted)

import qualified Data.Text.Lazy as T
import qualified Data.Text.Lazy.IO as T
import qualified Data.Text.Lazy.Read as T

main :: IO ()
main = do
  let
    modulus = 1000000007 :: Int
    modExp :: Integral a => Int -> a -> Int
    modExp = exp' 1
      where
        exp' z _ 0 = z
        exp' z w y = exp' z' w' y'
          where
            y' = y `div` 2
            w' = w * w `mod` modulus
            z' | even y    = z
               | otherwise = (z * w) `mod` modulus
  n <- unsafeTextToInt <$> T.getLine :: IO Int
  print $ (modExp 10 n - 2 * modExp 9 n + modExp 8 n) `mod` modulus

unsafeTextToInt :: T.Text -> Int
unsafeTextToInt s = case T.signed T.decimal s of
  Right (n, _) -> n
{-# INLINE unsafeTextToInt #-}