#include using namespace std; #define rep(i, n) for (int i = 0; i < (n); ++i) using ll = long long; using ull = unsigned long long; int main() { cin.tie(nullptr)->sync_with_stdio(false); int n, d; cin >> n >> d; constexpr ll INF = 1e18; vector> dp(n + 1, { -INF, -INF }); dp[0].first = 0; rep(i, n) { int t, k; cin >> t >> k; dp[i + 1].first = max(dp[i].first + t, dp[i].second - d + t); dp[i + 1].second = max(dp[i].first - d + k, dp[i].second + k); // cerr << format("{}: {}\n", i, dp[i + 1]); } cout << max(dp[n].first, dp[n].second) << '\n'; return 0; }