# coding: utf-8
import sys

# 標準入力
data = tuple(map(int, sys.stdin.readline().strip().split(' ')))
n = data[0]
c = data[1]


plates = []

plates.append([0, 0])
for i in range(n):
    plates.append(list(map(int, sys.stdin.readline().strip().split(' '))))
plates.append([c, 0])

# カロリーの累積和を計算。一緒にそれぞれの最大カロリーになる箇所を取得しておく。
leftdp = [] 
rightdp = []
leftcalorie = 0
rightcalorie = 0
leftMaxIndex = 0
rightMaxIndex = 0
length = len(plates)
for i in range(length):
    leftcalorie = leftcalorie + plates[i][1]
    rightcalorie = rightcalorie + plates[length - 1 - i][1]

    leftdp.append(leftcalorie - plates[i][0])
    rightdp.append(rightcalorie - (c - plates[length - 1 - i][0]))

    if (leftdp[leftMaxIndex] < leftdp[-1]):
        leftMaxIndex = i
    if (rightdp[rightMaxIndex] < rightdp[-1]):
        rightMaxIndex = i


# 右回り、左回りどちらが最大になるか
if (leftdp[leftMaxIndex] > rightdp[rightMaxIndex]):
    rightMaxIndex = 0
    for i in range(1, length - 1 - leftMaxIndex):
        if (rightdp[rightMaxIndex] < rightdp[i]):
            rightMaxIndex = i
else:
    leftMaxIndex = 0
    for i in range(1, length - 1 - rightMaxIndex):
        if (leftdp[leftMaxIndex] < leftdp[i]):
            leftMaxIndex = i


# 右回り、左回りのそれぞれの最大値までの距離から、どちら方向に最初移動するかを決定してカロリーを算出
calorie = leftdp[leftMaxIndex] + rightdp[rightMaxIndex]
if (plates[leftMaxIndex][0] < c - plates[length - 1 - rightMaxIndex][0]):
    calorie = calorie - plates[leftMaxIndex][0]
else:
    calorie = calorie - (c - plates[length - 1 - rightMaxIndex][0])


# 標準出力
print(calorie)