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 0 [] . fmap ((\[t, v] -> (read t, read v)) . words)


solve :: Int -> Double -> [(Double, Int)] -> [(Double, Int)] -> [Double]
solve r p ys (x@(t, v) : xs)
    | p <= t = inc : solve r t (insertBy (flip (comparing fst)) x ys) xs
    | otherwise = inc : solve r inc [(inc, r)] xs
    where

        inc = tv / fromIntegral r
        tv = calc (r - v) (t * fromIntegral v) ys

solve _ _ _ _ = []

calc :: Int -> Double -> [(Double, Int)] -> Double
calc r acc ((t, v) : xs)
    | r >= v = calc (r - v) (acc + t * fromIntegral v) xs
    | otherwise = acc + fromIntegral r * t
calc _ acc _ = acc
