splitEvery2 :: [String] -> [(Int, String)] splitEvery2 = map (\[a, b] -> ((read :: String -> Int) a, b)) . takeWhile (not . null) . map (take 2) . iterate (drop 2) main :: IO () main = interact $ solve . splitEvery2 . tail . words solve :: [(Int, String)] -> String solve xs = (\(x, y) -> show x ++ " " ++ show y) $ foldl f (0, 0) xs f :: (Int, Int) -> (Int, String) -> (Int, Int) f a b = (fst a + c, snd a + d) where c = if k < length (snd b) then k else length (snd b) d = if k < length (snd b) then length (snd b) - k else 0 k = floor (fromIntegral (12 * fst b) / fromIntegral 1000)