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