import qualified Data.ByteString.Char8 as BS
import Control.Monad
import Data.Char
import Data.List

getVals::IO [Int]
getVals = unfoldr (BS.readInt . BS.dropWhile isSpace) <$> BS.getLine

main::IO()
main = do
    n:_ <- getVals
    let (a,_,_,_) = genList !! (n-1)
    print a

modnum::Int
modnum = 10^9 + 7

mSum::Int->Int->Int
mSum a b = mod (a+b) modnum

mpro::Int->Int->Int
mpro a b = mod (a*b) modnum

genList::[(Int,Int,Int,Int)]
genList = (0,1,1,8):[
    (foldl mSum 0 [(mpro have09 10),only0,only9],
    mSum (mpro only0 9) no09,
    mSum (mpro only9 9) no09,
    mpro no09 8
    )
    |(have09,only0,only9,no09)<-genList]