{-# LANGUAGE BangPatterns #-} module Main where import Control.Monad fiboMod :: Int -> Int -> Int fiboMod 1 d = 0 `mod` d fiboMod 2 d = 1 `mod` d fiboMod n d = iter 0 1 3 where iter !a !b !i | i == n = (a + b) `mod` d | otherwise = iter b ((a + b) `mod` d) (i + 1) main :: IO () main = do [n, m] <- fmap read . words <$> getLine :: IO [Int] print $ fiboMod n m