#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
#define max(a,b) (((a)>(b))?(a):(b))
struct str
{
int t,pret;
};
bool compare(str a,str b)
{
return a.t<b.t;
}
int main()
{
int n,m,j,i,max,actual,g;
FILE * fp;
fp = fopen("carnati.in","r");
fscanf(fp,"%i",&n);
fscanf(fp,"%i",&m);
str vals[2001];
for(i = 1;i<=n;i++)
{
fscanf(fp,"%i",&vals[i].t);
fscanf(fp,"%i",&vals[i].pret);
}
sort(vals+1,vals+n+1,compare);
for(i = 1;i<=n;++i)
{
actual = -m;
max = 0;
for(j=1;j<=n;++j)
{
if(vals[i].pret <= vals[j].pret)
{
g = vals[i].pret;
}
else
{
g = 0;
}
actual = max(g - m,actual -(vals[j].t - vals[j-1].t)*m + g);
max = max(actual,max);
}
}
fclose(fp);
fp = fopen("carnati.out","w");
fprintf(fp,"%i",max);
fclose(fp);
return 0;
}