package yuki172; import java.util.Scanner; public class D { public static void main(String[] args) { // TODO Auto-generated method stub Scanner sc = new Scanner(System.in); int N = sc.nextInt(); long D = sc.nextLong(); long[] T = new long[N]; long[] K = new long[N]; long[] Tans = new long[N]; long[] Kans = new long[N]; for(int i=0; i<N; i++) { T[i] = sc.nextLong(); K[i] = sc.nextLong(); } sc.close(); Tans[0] = T[0]; Kans[0] = K[0] - D; for(int i=1; i<N; i++) { Tans[i] = T[i] + max(Tans[i-1], Kans[i-1]-D); Kans[i] = K[i] + max(Tans[i-1]-D, Kans[i-1]); } System.out.println(max(Tans[N-1], Kans[N-1])); } private static long max(long a, long b) { if(a > b) { return a; } else { return b; } } }