은행 대기열

아직 제출이 없습니다시간 제한1초메모리 제한256 MB

문제

올리버는 은행 지점장이고 오늘 영업을 곧 끝내려 한다. 은행이 금리를 42퍼센트 올렸다는 소식(연 0.01퍼센트에서 연 0.0142퍼센트로)을 듣고 현금을 맡기려는 사람이 창구 앞에 길게 줄을 서 있다.

사람은 많은데 열려 있는 창구는 하나뿐이라 1분에 한 명씩만 응대한다. 욕심 많은 올리버는 줄에 선 사람 중 일부를 골라 그들이 맡기는 현금의 합을 최대로 만들려고 한다. 그 돈은 밤새 은행이 굴린다.

문제가 하나 있다. 어떤 사람은 다른 곳에 가야 해서 영업이 끝날 때까지 기다리지 못한다. 정해진 시각까지 응대를 받지 못하면 그냥 떠난다. 올리버는 홀이 이미 붐빈다는 이유로 출입문의 적외선 센서도 꺼서 새로 들어오는 사람을 막았다.

1분에 최대 한 명씩 응대해서 영업이 끝나기 전에 올리버가 모을 수 있는 현금의 최대 액수를 구하라.

입력

첫 줄에 줄에 선 사람 수 NN과 영업이 끝날 때까지 남은 시간(분) TT가 주어진다 (1N100001 \le N \le 10000, 1T471 \le T \le 47).

다음 NN개 줄에는 각각 정수 cic_itit_i가 주어진다. cic_iii번 사람이 가진 현금 액수(스웨덴 크로나)이고, tit_i는 응대를 받지 못하면 ii번 사람이 떠나는 시각으로 지금부터 몇 분 뒤인지를 나타낸다. 한 사람을 응대하는 데 1분이 걸리며, ii번 사람은 늦어도 tit_i분에는 응대를 시작해야 한다. 응대는 00분, 11분, 그리고 T1T-1분까지의 정수 시각 중 하나에 시작하고, 한 시각에는 한 명만 응대한다. 1ci1000001 \le c_i \le 100000이고 0ti<T0 \le t_i < T이다.

출력

영업이 끝나기 전에 줄에 선 사람들에게서 모을 수 있는 현금의 최대 액수를 한 줄에 출력한다.