#include using namespace std; using ll = long long; #define rep(i, j) for(int i=0; i < (int)(j); i++) #define all(v) v.begin(),v.end() template bool set_max(T &a, const T &b) { return a < b ? a = b, true : false; } const int INF = 1 << 30; const ll INFL = 1LL << 60; class Solver { public: bool solve() { int N, D; cin >> N >> D; vector> dp(N + 1, vector(2, -INFL)); dp[0][0] = 0; rep(n, N) { ll T, K; cin >> T >> K; set_max(dp[n + 1][0], dp[n][0] + T); set_max(dp[n + 1][0], dp[n][1] + T - D); set_max(dp[n + 1][1], dp[n][0] + K - D); set_max(dp[n + 1][1], dp[n][1] + K); } cout << *max_element(all(dp[N])) << endl; return 0; } }; int main() { cin.tie(0); ios::sync_with_stdio(false); Solver s; s.solve(); return 0; }