using System;
using System.Collections.Generic;
using System.Linq;

namespace yukicoder
{
	public class Program
	{
		public static void Main()
		{
			var line = Console.ReadLine().Split(' ');
			var n = int.Parse(line[0]);
			var d = int.Parse(line[1]);
			var t = new int[n];
			var k = new int[n];
			for(var i = 0; i < n; i++)
            {
				line = Console.ReadLine().Split(' ');
				t[i] = int.Parse(line[0]);
				k[i] = int.Parse(line[1]);
			}
			var tmax = new int[n];
			var kmax = new int[n];
			tmax[0] = t[0];
			kmax[0] = k[0] - d;
            if (n > 1)
            {
				for(var i = 1; i < n; i++)
                {
					tmax[i] = Math.Max(tmax[i - 1] + t[i], kmax[i - 1] + t[i] - d);
					kmax[i] = Math.Max(kmax[i - 1] + k[i], tmax[i - 1] + k[i] - d);
				}
            }
			Console.WriteLine(Math.Max(tmax[n - 1], kmax[n - 1]));
		}
    }
}