#include #define int long long using namespace std; using LL = long long; using P = pair; using Tapris = tuple; #define FOR(i, a, n) for(int i = (int)(a); i < (int)(n); ++i) #define REP(i, n) FOR(i, 0, n) #define pb(a) push_back(a) #define all(x) (x).begin(),(x).end() const int INF = (int)1e9; const LL INFL = (LL)1e15; const int MOD = 1e9 + 7; int dy[]={0, 0, 1, -1, 0}; int dx[]={1, -1, 0, 0, 0}; /*************** using variables ***************/ int n, d; vector t, k; int dp[105][2]; /**********************************************/ signed main(){ cin.tie(0); ios::sync_with_stdio(false); cin >> n >> d; t.assign(n, 0); k.assign(n, 0); REP(i, n) cin >> t[i] >> k[i]; dp[0][0] = 0; dp[0][1] = -d; REP(i, n){ dp[i+1][0] = max(dp[i][0] + t[i], dp[i][1] - d + t[i]); dp[i+1][1] = max(dp[i][1] + k[i], dp[i][0] - d + k[i]); } cout << max(dp[n][0], dp[n][1]) << endl; }