#include <bits/stdc++.h>
using namespace std;
int main() {
  long long N, C;
  long long i;
  cin >> N >> C;
  long long x[N], v[N];
  for (i = 0; i < N; i++) {
    cin >> x[i] >> v[i];
  }
  long long lmax[N], rmax[N];
  long long lnow = v[0] - x[0];
  long long rnow = v[N - 1] - C + x[N - 1];
  lmax[0] = rmax[0] = 0;
  if (lnow > 0) {
    lmax[0] = lnow;
  }
  if (rnow > 0) {
    rmax[0] = rnow;
  }
  for (i = 1; i < N; i++) {
    lnow = lnow + v[i] - x[i] + x[i - 1];
    rnow = rnow + v[N - i - 1] + x[N - i - 1] - x[N - i];
    lmax[i] = lmax[i - 1];
    rmax[i] = rmax[i - 1];
    if (lnow > lmax[i - 1]) {
      lmax[i] = lnow;
    }
    if (rnow > rmax[i - 1]) {
      rmax[i] = rnow;
    }
  }
  long long max = lmax[N - 1];
  if (max < rmax[N - 1]) max = rmax[N - 1];
  for (i = 0; i < N - 1; i++) {
    cout << "";
    lnow = v[i] - 2 * x[i] + rmax[N - i - 2];
    if (max < v[i] - 2 * x[i] + rmax[N - i - 2]) {
      max = v[i] - 2 * x[i] + rmax[N - i - 2];
    }
    rnow = v[N - i - 1] - 2 * (C - x[N - i - 1]) + lmax[N - i - 2];
    if (max < v[N - i - 1] - 2 * (C - x[N - i - 1]) + lmax[N - i - 2]) {
      max = v[N - i - 1] - 2 * (C - x[N - i - 1]) + lmax[N - i - 2];
    }
  }
  cout << max;
  return 0;
}
