m :: Int m = 1000000007 -- based on https://wiki.haskell.org/Memoization kenkenpa :: Int -> Int kenkenpa = (!!) (map ken [1 ..]) . subtract 1 where ken 1 = 1 ken 2 = 2 ken 3 = 2 ken n = flip mod m $ kenkenpa (n - 3) + kenkenpa (n - 2) main :: IO () main = print . kenkenpa =<< readLn