import qualified Data.Vector.Unboxed.Mutable as VUM import Control.Monad.ST import Control.Monad main :: IO () main = do [n, m] <- map read . words <$> getLine print $ solve n m solve :: Int -> Int -> Int solve n m = runST $ do v <- VUM.new n VUM.write v 0 0 VUM.write v 1 1 forM_ [2 .. n - 1] $ \i -> do x <- VUM.read v $ i - 1 y <- VUM.read v $ i - 2 VUM.write v i $ (x + y) `mod` m VUM.read v $ n - 1