import Control.Monad import Data.Array.ST import Data.Array.Unboxed m :: Int m = 10 ^ 9 + 7 kenTable :: Int -> UArray Int Int kenTable n = runSTUArray $ do t <- newArray_ (1, max 3 n) writeArray t 1 1 writeArray t 2 2 writeArray t 3 2 forM_ [4 .. n] $ \i -> do term1 <- readArray t $ i - 2 term2 <- readArray t $ i - 3 writeArray t i $ flip mod m $ term1 + term2 return t ken :: Int -> Int ken n = (! n) $ kenTable n main :: IO () main = print . ken =<< readLn