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 where opt3 = fromIntegral $ 1 + b + 1 opt2 = do let a = length ps n <- [0..a] let ps' = reverse $ drop n $ reverse ps p' = product [p | p <- ps'] a' = length ps' return $ fromIntegral (n + b - length ps' + 1) + (1 - p') * (fromIntegral b + 1)