import Data.Int modulo = 10 newtype Modulo = Modulo { getInteger :: Int64 } deriving(Eq,Ord) instance Num Modulo where Modulo a + Modulo b = Modulo ((a+b) `mod` modulo) Modulo a - Modulo b = Modulo ((a-b) `mod` modulo) Modulo a * Modulo b = Modulo ((a*b) `mod` modulo) abs (Modulo a) = Modulo (abs a) signum (Modulo a) = Modulo (signum a) fromInteger i = Modulo (fromInteger (i`mod` fromIntegral modulo)) instance Show Modulo where show (Modulo i) = show i main :: IO () main = do n <- readLn :: IO Integer m <- readLn :: IO Integer print $ (fromInteger n :: Modulo) ^ m