import Control.Monad import Text.Printf main :: IO () main = do t <- readLn forM_ [(1::Int)..t] $ \i -> do [a,b] <- liftM (map read . words) getLine ps <- liftM (map read . words) getLine let ans = solve b ps printf "Case #%d: %f\n" i ans solve :: Int -> [Double] -> Double solve b ps = minimum $ opt3 : (opt2 (reverse ps) (length ps) (product ps) 0) where opt3 = fromIntegral $ 1 + b + 1 opt2 :: [Double] -> Int -> Double -> Int -> [Double] opt2 [] _ _ keys = return $ fromIntegral (keys + b + 1) opt2 pps@(p:ps) len pp keys = fromIntegral (keys + (b - len) + 1) + (1 - pp) * fromIntegral (b + 1) : opt2 ps (len - 1) (pp / p) (keys + 1)