막대기
시간 제한1초메모리 제한128 MB
끝점에서만 만나고 서로 교차하지 않도록 막대를 이어 총 길이를 최대화합니다.
문제
길이가 서로 다른 여러 막대기로 즐기는 게임이 있다. 게임을 시작하기 전에 간격이 인 두 개의 평행한 수평선을 책상 위에 긋고, 각 막대기의 두 끝이 위쪽 수평선과 아래쪽 수평선에 하나씩 놓이도록 배치한다. 여러 막대기의 끝이 수평선 위의 한 점에서 만날 수는 있지만, 두 막대기가 완전히 겹치는 경우는 없다.
각 막대기는 로 나타낸다. 여기서 는 위쪽 수평선에서의 좌표, 는 아래쪽 수평선에서의 좌표이다. 아래 그림 1에서 막대기 는 , 막대기 는 이다.

게임의 목표는 놓여 있는 막대기 중 일부를 들어내어, 남은 막대기들이 다음 세 조건을 모두 만족하는 하나의 지그재그 선을 이루도록 하는 것이다.
- 막대기들은 끝점에서만 맞닿고, 그 외에는 서로 교차하지 않는다.
- 한 점에서 세 개 이상의 막대기 끝이 만나지 않는다.
- 모든 막대기가 서로 연결되어 있다.
이 게임의 승자는 가장 긴 지그재그 선을 만든 사람이다. 지그재그 선의 길이는 그것을 이루는 막대기 길이의 합이며, 막대기 하나의 길이는 두 끝점 사이의 수평 거리와 수직 거리를 더한 값이다. 막대기 의 수평 거리는 이고, 수직 거리는 두 수평선 사이의 간격인 이다. 위 그림에서 각 막대기의 길이는 다음과 같다.
예를 들어 그림 1에서 막대기 만 남기면 세 조건을 모두 만족하는 지그재그 선이 되고 길이는 이다. 막대기 만 남겨도 세 조건을 모두 만족하며 길이는 이다. 막대기 만 남기면 조건 1을, 막대기 만 남기면 조건 2를, 막대기 만 남기면 조건 3을 위반한다. 가장 긴 지그재그 선은 막대기 로 이루어지며 길이는 이다.
막대기들의 초기 배치가 주어질 때, 만들 수 있는 가장 긴 지그재그 선의 길이를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 막대기의 개수 과 두 수평선 사이의 간격 이 공백을 사이에 두고 주어진다. 이고 이다.
다음 개의 줄에는 각 줄마다 막대기 하나를 나타내는 두 정수 와 가 공백을 사이에 두고 주어진다. 이다. 입력으로 주어지는 어떤 두 막대기도 완전히 겹치지 않는다.
출력
만들 수 있는 가장 긴 지그재그 선의 길이를 한 줄에 출력한다.
힌트
중간 계산 값과 정답이 32비트 정수 범위를 벗어날 수 있으므로 64비트 정수 자료형을 사용하는 것을 권장한다.