#include #define rep(i,n) for(int i = 0; i < n; i++) #define REP(i,s,n) for(int i = s; i < n; i++) typedef long long ll; using namespace std; using Graph = vector>; ll gcd(ll a, ll b) { return b ? gcd(b, a%b) : a; } ll lcm(ll a, ll b) { return (a * b) / gcd(a,b); } ll ceil(const ll a, const ll b) { return (a + b - 1) / b; } int dp[1000][2]; int main(){ int n,d; cin >> n >> d; vectort(n),k(n); rep(i,n)cin >> t[i] >> k[i]; dp[0][1] = -d; rep(i,n){ dp[i + 1][0] = max(dp[i][0] + t[i],dp[i][1] + k[i] - d); dp[i + 1][1] = max(dp[i][0] + t[i] - d,dp[i][1] + k[i]); } cout << max(dp[n][0],dp[n][1]) << endl; return 0; }