package yukicoder;
import java.util.Scanner;
public class N561
{
	public static void main(String[] args)
	{
		Scanner sc=new Scanner(System.in);
		int N=sc.nextInt();
		int D=sc.nextInt();
		int[] T=new int[N];
		int[] K=new int[N];

		int buf=0;
		for(int i=0;i<N;i++)
		{
			T[i]=sc.nextInt();
			K[i]=sc.nextInt();
		}
		int Tmax=T[0];
		int Kmax=K[0]-D;
		for(int i=1;i<N;i++)
		{
			buf=Tmax;
			Tmax=max(Tmax+T[i],Kmax+T[i]-D);
			Kmax=max(Kmax+K[i],buf+K[i]-D);
		}
				System.out.println(max(Tmax,Kmax));
	}

	static int max(int a,int b)
	{
		return (a>=b)?a:b;
	}

}