(x:xs) `merge` (y:ys)
  | x <= y        = x : xs `merge` (y:ys)
  | otherwise     = y : (x:xs) `merge` ys
(x:xs) `merge` (y:ys)
  | x <= y        = x : xs `merge` (y:ys)
  | otherwise     = y : (x:xs) `merge` ys
(x:xs) `merge` (y:ys)
  | x <= y        = x : xs `merge` (y:ys)
  | otherwise     = y : (x:xs) `merge` ys