import Control.Monad
import Data.List
import Data.Ord
import Text.Printf
main = getLine >>= main' . fmap read . words
    where
        main' [n, l] = replicateM n getLine >>= mapM_ (printf "%.7f\n") . solve l [] . fmap ((\[t, v] -> (read t, read v)) . words)

solve :: Int -> [(Int, Int)] -> [(Int, Int)] -> [Double]
solve l ys (x@(t, v) : xs) = fromIntegral tv / fromIntegral l : solve l (insertBy (flip compare) x ys) xs
    where
        tv = calc (l - v) (t * v) ys

        calc r acc ((xt, xv) : xtvs)
            | r >= xv = calc (r - xv) (acc + xt * xv) xtvs
            | otherwise = acc + r * xt
        calc _ acc _ = acc

solve _ _ _ = []
