N, D = gets.split.map(&:to_i) Q = N.times.map { gets.split.map(&:to_i) } dp = Array.new(N + 1) { Array.new(2, 0) } Q.each.with_index(1) do |(t, k), i| dp[i][0] = [dp[i - 1][0] + t, dp[i - 1][1] + t - D].max if i == 1 dp[i][1] = dp[i - 1][0] + k - D else dp[i][1] = [dp[i - 1][0] + k - D, dp[i - 1][1] + k].max end end puts dp[N].max