minimumOrders :: [Integer] -> Integer minimumOrders (x : y : l : _) | y >= 0 && x == 0 = ceil y l | y >= 0 && x /= 0 = 1 + (ceil y l) + (flip ceil l $ abs x) | otherwise = 2 + (flip ceil l $ abs x) + (flip ceil l $ abs y) where ceil n m = flip div m $ n + m - 1 main :: IO () main = print . minimumOrders . map read . lines =<< getContents