#include<stdio.h>
long int n,c,i,j,t[2001],p[2001],p1[2001],poz[2001],aux,pf,ok[2001],
profit[2001],profitsol;
void hd(long int ic,long int nc);
void sh(long int i1,long int i2);
void hdp(long int ic,long int nc);
void shp(long int i1,long int i2);
int main()
{
FILE *f=freopen("carnati.in","r",stdin),*g=freopen("carnati.out","w",stdout);
scanf("%ld%ld",&n,&c);profitsol=-1000000000;
for(i=1;i<=n;i++)fscanf(f,"%ld%ld",&t[i],&p[i]);
for(i=n/2;i>=1;i--)hd(i,n);
for(i=n;i>=1;i--){sh(1,i);hd(1,i-1);}
for(i=1;i<=n;i++){p1[i]=p[i];poz[i]=i;}
for(i=n/2;i>=1;i--)hdp(i,n);
for(i=n;i>=1;i--){shp(1,i);hdp(1,i-1);}
for(i=n;i>=1;i--)
{ pf=p1[i];ok[poz[i]]=1;
while(p1[i-1]==pf){i--;ok[poz[i]]=1;}
for(j=1;j<=n;j++)
{ if(profit[j-1]+c>(t[j]-t[j-1])*c)
profit[j]=profit[j-1]-(t[j]-t[j-1])*c+ok[j]*pf;
else
profit[j]=ok[j]*pf-c;
profitsol=(profitsol>profit[j])?profitsol:profit[j];
}
}
printf("%ld",profitsol);
fcloseall();
return 0;
}
void hd(long int ic,long int nc)
{
long int is,is1;
is=2*ic;is1=is+1;
if(is>nc)return;
if(is<nc)if(t[is1]>t[is])is=is1;
if(t[is]>t[ic]){sh(is,ic);hd(is,nc);}
}
void sh(long int i1,long int i2)
{
aux=t[i1];t[i1]=t[i2];t[i2]=aux;
aux=p[i1];p[i1]=p[i2];p[i2]=aux;
}
void hdp(long int ic,long int nc)
{
long int is,is1;
is=2*ic;is1=is+1;
if(is>nc)return;
if(is<nc)if(p1[is1]>p1[is])is=is1;
if(p1[is]>p1[ic]){shp(is,ic);hdp(is,nc);}
}
void shp(long int i1,long int i2)
{
aux=p1[i1];p1[i1]=p1[i2];p1[i2]=aux;
aux=poz[i1];poz[i1]=poz[i2];poz[i2]=aux;
}