#include <bits/stdc++.h>
using namespace std;
string YN(bool y) { return (y ? "YES" : "NO"); }
string yn(bool y) { return (y ? "Yes" : "No"); }
string ON(bool y) { return (y ? "OK" : "NG"); }
vector<long long> x(100000), v(100000);
int main(void) {
  long long n, c, ans = 0;
  cin >> n >> c;
  vector<long long> x(n), v(n), vsum(n + 1, 0), vinv(n + 1, 0);
  for (int i = (int)(0); i < (int)(n); i++) cin >> x[i] >> v[i];
  for (int i = (int)(0); i < (int)(n); i++) vsum[i + 1] = vsum[i] + v[i];
  for (int i = (int)(1); i < (int)(n + 1); i++) vsum[i] -= x[i - 1];
  for (int i = (int)(n)-1; i >= (int)(0); i--) vinv[i] = vinv[i + 1] + v[i];
  for (int i = (int)(0); i < (int)(n); i++) vinv[i] -= (c - x[i]);
  for (int i = (int)(0); i < (int)(n + 1); i++) {
    if (ans < vsum[i]) ans = vsum[i];
    if (ans < vinv[i]) ans = vinv[i];
  }
  if (n <= 100) {
    for (int i = (int)(0); i < (int)(n); i++) {
      for (int j = (int)(0); j < (int)(n); j++) {
        if (i < j) {
          long long temp = vsum[i + 1] + vinv[j] - x[i];
          if (ans < temp) ans = temp;
          temp = vsum[i + 1] + vinv[j] - (c - x[j]);
          if (ans < temp) ans = temp;
        }
      }
    }
    cout << ans << endl;
  }
}
