splitEvery2 :: [Int] -> [[Int]] splitEvery2 = takeWhile (not . null) . map (take 2) . iterate (drop 2) main :: IO () main = interact $ show . solve . splitEvery2 . map read . tail . words solve :: [[Int]] -> Int solve xss = if all odd ys || all even ys then flip div 2 $ sum $ map (wmax - ) ys else -1 where ys = flip map xss (\(x:y:_) -> x + 4 * y) wmax = maximum ys