N,D = map(int,input().split()) dp = [[0 for i in range(2)]for j in range(N+1)] #dp[i][0] = i日目に東京にいる時に得ることが出来る最大の利益 #dp[i][1] = i日目に京都にいる時に得ることが出来る最大の利益 T = [] K = [] for i in range(N): t,k = map(int,input().split()) T.append(t) K.append(k) dp[1][0] = T[0] dp[1][1] = K[0]-D for i in range(2,N+1): dp[i][0] = max(dp[i-1][0]+T[i-1],dp[i-1][1]+T[i-1]-D) dp[i][1] = max(dp[i-1][1]+K[i-1],dp[i-1][0]+K[i-1]-D) #print(dp) print(max(dp[N]))