#include <iostream>
#include <string>
using namespace std;
typedef long long lint;

#define MIN(a,b) ((a)<(b)?(a):(b))
#define MAX(a,b) ((a)>(b)?(a):(b))

int main()
{
	lint N, D, T[101] = { 0 }, K[101] = { 0 }, dp[101][2] = { 0 };
	lint pos = 0; //0 : tokyo, 1 : kyoto
	cin >> N >> D;
	for (int i = 1; i <= N; i++) {
		cin >> T[i] >> K[i];
	}

	//dp[i][j] : i 日目に j にいて最大
	dp[0][1] = -D;
	for (int i = 1; i <= N; i++) {
		dp[i][0] = MAX(dp[i - 1][0] + T[i], dp[i - 1][1] + T[i] - D);
		dp[i][1] = MAX(dp[i - 1][0] + K[i] - D, dp[i - 1][1] + K[i]);
	}
	cout << MAX(dp[N][0], dp[N][1]) << endl;

	return 0;
}