#include #include #include #include #include #include using namespace std; const int inf = 1e9; int main() { int n, d; cin >> n >> d; vector t(n+1, 0), k(n+1, 0); for (int i = 1; i <= n; i++) { cin >> t[i] >> k[i]; } vector> dp(n + 1, vector(2, 0)); dp[0][1] = -inf; for (int i = 1; i <= n; i++) { dp[i][0] = max(dp[i-1][0] + t[i], dp[i-1][1] + t[i] - d); dp[i][1] = max(dp[i-1][1] + k[i], dp[i-1][0] + k[i] - d); // printf("dp[%d][0] = %d: %d %d\n", i, dp[i][0], dp[i-1][0] + t[i], dp[i-1][1] + k[i] - d); // printf("dp[%d][1] = %d: %d %d\n", i, dp[i][1], dp[i-1][1] + k[i], dp[i-1][0] + t[i] - d); } // for (int i = 0; i <= n; i++) { // printf("%2d: %10d %10d\n", i, dp[i][0], dp[i][1]); // } int ans = max(dp[n][0], dp[n][1]); cout << ans << endl; return 0; }