길이가 서로 다른 여러 막대기로 즐기는 게임이 있다. 게임을 시작하기 전에 간격이 L인 두 개의 평행한 수평선을 책상 위에 긋고, 각 막대기의 두 끝이 위쪽 수평선과 아래쪽 수평선에 하나씩 놓이도록 배치한다. 여러 막대기의 끝이 수평선 위의 한 점에서 만날 수는 있지만, 두 막대기가 완전히 겹치는 경우는 없다.
각 막대기는 (t,d)로 나타낸다. 여기서 t는 위쪽 수평선에서의 좌표, d는 아래쪽 수평선에서의 좌표이다. 아래 그림 1에서 막대기 a는 (1,0), 막대기 b는 (6,0)이다.

게임의 목표는 놓여 있는 막대기 중 일부를 들어내어, 남은 막대기들이 다음 세 조건을 모두 만족하는 하나의 지그재그 선을 이루도록 하는 것이다.
이 게임의 승자는 가장 긴 지그재그 선을 만든 사람이다. 지그재그 선의 길이는 그것을 이루는 막대기 길이의 합이며, 막대기 하나의 길이는 두 끝점 사이의 수평 거리와 수직 거리를 더한 값이다. 막대기 (t,d)의 수평 거리는 ∣t−d∣이고, 수직 거리는 두 수평선 사이의 간격인 L이다. 위 그림에서 각 막대기의 길이는 다음과 같다.
| 막대기 | a | b | c | d | e | f | g |
|---|---|---|---|---|---|---|---|
| 길이 | 4 | 9 | 6 | 4 | 4 | 7 | 3 |
예를 들어 그림 1에서 막대기 a,b,e만 남기면 세 조건을 모두 만족하는 지그재그 선이 되고 길이는 4+9+4=17이다. 막대기 c,e만 남겨도 세 조건을 모두 만족하며 길이는 6+4=10이다. 막대기 b,c만 남기면 조건 1을, 막대기 c,d,e만 남기면 조건 2를, 막대기 a,b,g만 남기면 조건 3을 위반한다. 가장 긴 지그재그 선은 막대기 c,d,f,g로 이루어지며 길이는 6+4+7+3=20이다.
막대기들의 초기 배치가 주어질 때, 만들 수 있는 가장 긴 지그재그 선의 길이를 구하는 프로그램을 작성하시오.
첫째 줄에 막대기의 개수 N과 두 수평선 사이의 간격 L이 공백을 사이에 두고 주어진다. 1≤N≤100,000이고 1≤L≤1,000,000이다.
다음 N개의 줄에는 각 줄마다 막대기 하나를 나타내는 두 정수 t와 d가 공백을 사이에 두고 주어진다. 0≤t,d≤100,000,000이다. 입력으로 주어지는 어떤 두 막대기도 완전히 겹치지 않는다.
만들 수 있는 가장 긴 지그재그 선의 길이를 한 줄에 출력한다.
중간 계산 값과 정답이 32비트 정수 범위를 벗어날 수 있으므로 64비트 정수 자료형을 사용하는 것을 권장한다.