#include <bits/stdc++.h>
using namespace std;
const int NMAX = 1e5 + 3;
const long long CMAX = 1e14;
int n;
long long c, clockwise[NMAX], calor[NMAX], counterclock[NMAX],
    calorCounter[NMAX];
int main() {
  ios::sync_with_stdio(false);
  cin.tie(0);
  cin >> n >> c;
  long long meilleur = 0, cumul = 0, cumulInv = 0;
  for (int i = 1; i <= n; i++) {
    cin >> clockwise[i] >> calor[i];
    counterclock[i] = c - clockwise[i];
  }
  for (int i = 1; i <= n; i++) {
    cumul += calor[i] - (clockwise[i] - clockwise[i - 1]);
    cumulInv +=
        calor[n + 1 - i] - (counterclock[n + 1 - i] - counterclock[n + 2 - i]);
    meilleur = max(meilleur, cumul);
    meilleur = max(meilleur, cumulInv);
  }
  int gauche = 0, droite = n + 1;
  long long gainGauche, gainDroit, gain = 0;
  while (gauche + 1 < droite) {
    gainDroit =
        calor[droite - 1] - (counterclock[droite - 1] - counterclock[droite]);
    gainGauche =
        calor[gauche + 1] - 2 * (clockwise[gauche + 1] - clockwise[gauche]);
    if (gainGauche > gainDroit) {
      gain += gainGauche;
      gauche++;
    } else {
      gain += gainDroit;
      droite--;
    }
    meilleur = max(meilleur, gain);
  }
  gauche = 0;
  droite = n + 1;
  gain = 0;
  while (gauche + 1 < droite) {
    gainDroit = calor[droite - 1] -
                2 * (counterclock[droite - 1] - counterclock[droite]);
    gainGauche =
        calor[gauche + 1] - (clockwise[gauche + 1] - clockwise[gauche]);
    if (gainGauche > gainDroit) {
      gain += gainGauche;
      gauche++;
    } else {
      gain += gainDroit;
      droite--;
    }
    meilleur = max(meilleur, gain);
  }
  cout << meilleur << '\n';
}
