#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <functional>
#include <queue>
#include <set>
#include <cmath>
#define rep(i,n) for(lli (i)=0;(i)<(n);(i)++)
#define rep1(i,n) for(lli i=1;i<=(int)(n);i++)

using namespace std;
typedef long long int lli;
const lli MAX=1e5;

int main(){
	lli N,C;
	cin>>N>>C;
	lli x[MAX+1],v[MAX+1];
	lli sv[MAX+1];
	sv[0]=0;
	rep1(i,N){
		cin>>x[i]>>v[i];
		sv[i]=sv[i-1]+v[i];
	}
	lli ans=0;
	lli a[MAX+1],b[MAX+2];
	a[0]=0;
	rep1(i,N)a[i]=max(a[i-1],sv[i]-2*x[i]);
	b[N+1]=0;
	for(lli i=N;i>=1;i--)b[i]=max(sv[N]-sv[i-1]-2*(C-x[i]),b[i+1]);
	
	rep1(i,N){
		ans=max(sv[i]-x[i]+b[i+1],ans);
	}
	rep1(i,N){
		ans=max(sv[N]-sv[i-1]-(C-x[i])+a[i-1],ans);
	}
	cout<<ans;
}