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 #-}
