#include <bits/stdc++.h>
using namespace std;
vector<long long> odleglosc;
vector<long long> sushi;
vector<long long> lewe;
vector<long long> prawe;
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  long long v, c, inp, inp2;
  cin >> v >> c;
  for (int i = 0; i < v; i++) {
    cin >> inp >> inp2;
    odleglosc.push_back(inp);
    sushi.push_back(inp2);
  }
  long long kon = 0;
  long long najwprawo = -99999999999999;
  long long wynik = 0;
  long long daleko = 0;
  long long najwpidx = 0;
  while (kon < v) {
    wynik += sushi[kon];
    wynik -= (odleglosc[kon] - daleko);
    daleko = odleglosc[kon];
    if (wynik > najwprawo) {
      najwprawo = wynik;
      najwpidx = kon;
    }
    prawe.push_back(najwprawo);
    kon++;
  }
  kon = v - 1;
  long long najwlewo = -99999999999999;
  wynik = 0;
  daleko = 0;
  long long najwlidx = 0;
  while (kon >= 0) {
    wynik += sushi[kon];
    wynik -= ((c - odleglosc[kon]) - daleko);
    daleko = (c - odleglosc[kon]);
    if (wynik > najwlewo) {
      najwlewo = wynik;
      najwlidx = kon;
    }
    lewe.push_back(najwlewo);
    kon--;
  }
  wynik = 0;
  wynik = max(wynik, max(najwlewo, najwprawo));
  for (long long i = 0; i < v - 1; i++)
    wynik = max(wynik, (prawe[i] + lewe[v - i - 2] - odleglosc[i]));
  for (long long i = 0; i < v - 1; i++)
    wynik = max(wynik, (lewe[i] + prawe[v - i - 2] - odleglosc[v - i - 2]));
  cout << wynik;
  return 0;
}
