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

class Solution
{
    static void Main()
    {
        var vals = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
        int n = vals[0];
        int cost = vals[1];
        var tokyo = new int[n];
        var kyoto = new int[n];
        for (int i = 0; i < n;i++)
        {
            vals = Console.ReadLine().Split(' ').Select(int.Parse).ToArray();
            tokyo[i] = vals[0];
            kyoto[i] = vals[1];
        }

        int onTokyo = 0;
        int onKyoto = -cost;
        for (int i = 0; i < n;i++)
        {
            var nextTokyo = Math.Max(onTokyo, onKyoto - cost ) + tokyo[i];
            var nextKyoto = Math.Max(onKyoto, onTokyo - cost ) + kyoto[i];
            onTokyo = nextTokyo;
            onKyoto = nextKyoto;
        }

        var best = Math.Max(onTokyo, onKyoto);
        Console.WriteLine(best);
    }
}