import Data.List
import Text.Printf
main :: IO ()
main = do
  [_, pickupDice] <- getInts
  dices <- getInts
  print $ getMax pickupDice dices

-- | 最大値を取得
-- 
-- >>> getMax 4 [17,13,13,12,15,20,10,13,17,11]
-- 32.0
getMax :: Int -> [Int] -> Float
getMax pickupDice dices = realToFrac (maxSum + pickupDice) / 2.0
  where 
    maxSum = maximum $ getSumOfWindows pickupDice dices
-- | x 要素ごとの window を取得して合計を出す
--
-- >>> getSumOfWindows 3 [1,2,3,4,5,6,7,8,9,10]
-- [6,9,12,15,18,21,24,27,19,10,0]
getSumOfWindows :: Int -> [Int] -> [Int]
getSumOfWindows n = map (sum . take n) . tails

getInts = do
  x <- getLine
  let y = (map $ read) $ words x :: [Int]
  return y
