#include<bits/stdc++.h>
using namespace std;
#define int long long

int n,c;
vector<int> x,v;
vector<int>f,g;

int inf=1e18;

void fill_vector(vector<int>a,vector<int>b){
	f.resize(n+1,0);g.resize(n+1,0);
	for(int i=0;i<n;i++){
		f[i+1]=f[i]+b[i];
	}
	int tmp=-inf;
	for(int i=0;i<n;i++){
		g[i+1]=max(g[i],f[i+1]-a[i]);
	}
}


int main(){
	cin>>n>>c;
	x.resize(n);
	v.resize(n);
	for(int i=0;i<n;i++){
		cin>>x[i]>>v[i];
	}

	fill_vector(x,v);
	int ans=f[n]-min({2*(c-x[0]),2*(c-x[n-1]),c});

	for(int i=0;i<n-1;i++){
		ans=max(ans,g[i+1]+f[n]-f[i+1]-2*(c-x[i+1]));
	}
	reverse(begin(x),end(x));
	reverse(begin(v),end(v));

	fill_vector(x,v);
	for(int i=0;i<n-1;i++){
		ans=max(ans,g[i+1]+f[n]-f[i+1]-2*(c-x[i+1]));
	}
	cout<<ans<<endl;

}