치즈 블록들을 높이가 최대 $T$ ($1 \le T \le 1000$)인 하나의 탑으로 쌓아 보관하려고 합니다.
치즈는 $1$번부터 $N$번까지 번호가 매겨진 $N$ ($1 \le N \le 100$)가지 종류가 있고, 각 종류의 블록은 원하는 만큼 얼마든지 사용할 수 있습니다. $i$번 종류의 블록은 가치 $V_i$ ($1 \le V_i \le 10^6$)와 높이 $H_i$ ($5 \le H_i \le T$)를 가지며, 모든 $H_i$는 $5$의 배수입니다.
치즈는 눌리면 압축됩니다. 높이가 $K$ ($1 \le K \le T$) 이상인 블록을 큰 블록이라고 부릅니다. 큰 블록은 탑에서 자신보다 아래에 있는 모든 블록(다른 큰 블록 포함)을 짓누릅니다. 짓눌린 블록은 가치는 그대로지만 높이가 원래의 정확히 $4/5$로 줄어듭니다. 모든 높이가 $5$의 배수이므로 짓눌린 높이는 항상 정수가 됩니다. 짓눌림은 전부 아니면 전무입니다. 즉, 블록은 짓눌리거나 짓눌리지 않을 뿐, 위에 큰 블록이 여러 개 있다고 해서 더 많이 짓눌리지는 않습니다. 어떤 블록이 큰 블록인지는 오직 그 블록 자신의 높이로만 정해지며, 탑 전체의 높이와는 무관합니다.
총 높이가 $T$ 이하인 탑 중에서 블록들의 가치 합이 최대가 되도록 쌓고, 그 최대 가치 합을 출력하세요.
예를 들어, 탑의 최대 높이가 $53$이고 높이가 $25$ 이상인 블록이 큰 블록이며 치즈가 세 종류라고 합시다.
Type Value Height
1 100 25
2 20 5
3 40 10
만들 수 있는 탑의 한 예는 다음과 같습니다.
Type Height Value
top -> [1] 25 100
[2] 4 20 (crushed by [1] above)
[3] 8 40 (crushed by [1] above)
[3] 8 40 (crushed by [1] above)
bottom -> [3] 8 40 (crushed by [1] above)
맨 위의 큰 블록이 그 아래의 모든 블록을 짓누릅니다. 총 높이는 $25 + 4 + 8 + 8 + 8 = 53 \le 53$으로 규칙에 맞고, 총 가치는 $100 + 20 + 40 + 40 + 40 = 240$입니다. 이것이 이 블록 집합으로 만들 수 있는 가장 좋은 탑입니다.