import qualified Data.ByteString.Char8 as BS
import Control.Monad
import Data.List
import Data.Maybe

main = do
  li <- BS.getLine
  let [n,d,a] = map (read . BS.unpack) $ BS.words li
  co <- BS.getContents
  let xhs = map ((\[x,h] -> (x,h)) . map (fst . fromJust . BS.readInt)) $ map BS.words $ BS.lines co
  let ans = compute n d a xhs
  print ans

compute :: Int -> Int -> Int -> [(Int,Int)] -> Int
compute n d a xhs = loop 0 [] (sort xhs)
  where
    d2 = d * 2
    loop n _ [] = n
    loop n [] ((x,h):xhs) = loop (n+k) [(x+d2,a*k)] xhs
      where k = (h + a - 1) `div` a
    loop n ybs0@((y,b):ybs) xhs0@((x,h):xhs)
      | y < x  = loop n ybs xhs0
      | h <= b = loop n ybs0 xhs
      | True   = loop (n+k) ybs' xhs
      where
        k = (h - b + a - 1) `div` a
        ak = a * k
        ybs' = map (\(y,b) -> (y,b+ak)) (ybs0++[(x+d2,0)])
