#include <fstream>
#include <cstring>
#include <algorithm>
using namespace std;
pair <int, int> v[ 2001];
int p[1501];
int main()
{
ifstream in("carnati.in");
ofstream out("carnati.out");
int n,c;
int max=0;
in >> n >> c;
for (int i = 1; i <= n; i++)
in >> v[i].first >> v[i].second;
sort(v + 1, v + 1 + n);
int t_max = v[n].first;
for (int i = 1; i <= n; ++i)
{
int pret=v[i].second;
memset(p, 0, sizeof(p));
for (int j = 1; j <= n; j++)
if (v[j].second >= pret)
p[v[j].first] += pret;
p[0] -= c;
for (int t = 1; t <= t_max; t++)
p[t]+=p[t - 1]-c;
int min = 0;
for (int t = 0; t <= t_max; t++)
{
if (min > p[t])
min = p[t];
if (max < p[t] - min)
max = p[t] - min;
}
}
out << max;
return 0;
}