main :: IO () main = print =<< solve . (\[x, y] -> [x `div` gcd x y, y `div` gcd x y]) . map read . words <$> getLine solve :: [Int] -> Int solve [m, n] = f 0 m n f :: Int -> Int -> Int -> Int f a b c | b == c = a | b == 1 = a + c | c == 1 = a + b - 1 | b > c = f (a + q) r c | otherwise = f (a + 1) c b where (q, r) = divMod b c