점프

격자 위 타일에 도착하면 에너지를 얻고 이동에는 B가 들 때, 오른쪽이나 위로만 점프해 타일 N에 도착했을 때 남는 에너지의 최댓값을 구한다.

보통7동적 계획법그래프정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

2차원 평면에 타일 NN개가 놓여 있다. ii번 타일의 좌표는 (xi,yi)(x_i, y_i)이고, 그 위에는 점프 에너지를 eie_i만큼 채워 주는 에너지 통이 하나 있다.

점프는 오른쪽 또는 위쪽으로만 한다. 타일 (x1,y1)(x_1, y_1)에서 타일 (x2,y2)(x_2, y_2)로 점프하려면 y1=y2y_1 = y_2이면서 x1<x2x_1 < x_2이거나(오른쪽), x1=x2x_1 = x_2이면서 y1<y2y_1 < y_2여야 한다(위쪽). 두 타일이 서로 붙어 있을 필요는 없고, 같은 행이나 같은 열에서 그 방향에 있는 타일이면 어디로든 점프할 수 있다. 타일이 없는 곳으로는 점프하지 못한다.

점프를 한 번 할 때마다 에너지를 BB만큼 쓴다. 에너지가 BB보다 적으면 점프할 수 없다. 새 타일에 도착하면 곧바로 그 타일의 에너지 통을 얻어 에너지가 eie_i만큼 늘어난다.

출발 지점은 11번 타일이고, 출발할 때 에너지는 e1e_1이다. 11번 타일에서 NN번 타일까지 점프해서 이동하되, NN번 타일에 도착했을 때 남는 에너지를 최대로 만들어야 한다.

NN번 타일에 도착했을 때 가질 수 있는 최대 에너지를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 테스트 케이스의 개수 TT가 주어진다. (1T101 \le T \le 10)

각 테스트 케이스의 첫째 줄에는 두 정수 NNBB가 주어진다. (2N3000002 \le N \le 300000, 1B10001 \le B \le 1000)

이어지는 NN개 줄에는 11번 타일부터 NN번 타일까지의 정보가 순서대로 주어진다. 각 줄에는 세 정수 xix_i, yiy_i, eie_i가 주어진다. (0xi,yi1000000 \le x_i, y_i \le 100000, 0ei10000 \le e_i \le 1000)

좌표가 같은 타일은 없다. 에너지 규칙을 지키면서 11번 타일에서 NN번 타일까지 갈 수 있는 점프 순서가 적어도 하나 존재한다.

출력

각 테스트 케이스마다 NN번 타일에 도착했을 때 가질 수 있는 최대 에너지를 한 줄에 하나씩 출력한다.