N,D=map(int,input().split()) T=[] K=[] for i in range(N): t,k=map(int,input().split()) T.append(t) K.append(k) dpT=[0 for i in range(N)] dpK=[0 for i in range(N)] dpT[0]=T[0] dpK[0]=K[0]-D for i in range(1,N): dpT[i]=max(dpT[i-1]+T[i],dpK[i-1]-D+T[i]) dpK[i]=max(dpK[i-1]+K[i],dpT[i-1]-D+K[i]) print(max(dpT[N-1],dpK[N-1]))