data Here = Tokyo | Kyoto deriving Eq main = do [n,d] <- map read . words <$> getLine :: IO [Int] tks <- map (map read . words) . lines <$> getContents print (tt Tokyo d (tks++[[0,0]])) tt _ _ [] = 0 tt _ _ [[0,0]] = 0 tt Tokyo d ([t1,k1]:tks@([t2,k2]:_)) | (t1+t2) < (k1+k2-d) || (t1+t2) < (k1+t2-2*d) = (max t1 k1 - d) + tt Kyoto d tks | otherwise = t1 + tt Tokyo d tks tt Kyoto d ([t1,k1]:tks@([t2,k2]:_)) | (k1+k2) < (t1+t2-d) || (k1+k2) < (t1+k2-2*d) = (max t1 k1 - d) + tt Tokyo d tks | otherwise = k1 + tt Kyoto d tks