{-# LANGUAGE BangPatterns #-} import Control.Monad import Text.Printf f :: Integer -> Integer -> [Integer] -> Integer f r k gs = go r gs 0 where go :: Integer -> [Integer] -> Integer -> Integer go 0 _ p = p go r gs p = case g k gs of (s, xs, ys) -> go (r-1) (ys++xs) (p + s) g :: Integer -> [Integer] -> (Integer, [Integer], [Integer]) g k = go 0 [] where go !n xs [] = (n, reverse xs, []) go !n xs ggs@(g:gs) | n+g <= k = go (n+g) (g:xs) gs | otherwise = (n, reverse xs, ggs) main :: IO () main = do t <- readLn forM_ [(1::Int)..t] $ \i -> do [r, k, n] <- liftM (map read . words) $ getLine gs <- liftM (map read . words) $ getLine printf "Case #%d: %d\n" i (f r k gs)