import Control.Monad import Data.List extendedEuclidean :: Integral a => a -> a -> (a, a, a) extendedEuclidean a 0 = (a,1,0) extendedEuclidean a b = (d,p,q-a`div`b*p) where (d,q,p) = extendedEuclidean b (a`mod`b) chineseRemainder :: Integral a => [(a,a)] -> Maybe (a,a) chineseRemainder xs = foldl aux (Just (0,1)) xs where aux Nothing _ = Nothing aux (Just (b1,m1)) (b2,m2) | (b2-b1) `mod` d /= 0 = Nothing | otherwise = Just (b1+m1*(((b2-b1)*p`div`d)`mod`(m2`div`d)), m1*m2`div`d) where (d,p,q) = extendedEuclidean m1 m2 main = do c <- do chineseRemainder <$> do replicateM 3 $ (\[a,b] -> (a,b)) . map read . words <$> getLine :: IO [(Integer,Integer)] print $ case c of Just (d,m) -> if d == 0 then m else d Nothing -> -1