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])); } } }