import numpy as np N, K = map(int, input().split()) INF = 10 ** 9 pizza = [tuple(map(int, input().split())) for _ in range(N)] pizza.sort(key=lambda x: -x[0]) dp0 = np.zeros(K + 1, dtype=int) dp1 = np.full(K + 1, -INF, dtype=int) for p, d in pizza: new_dp0 = dp0.copy() new_dp1 = dp1.copy() new_dp1[p:] = np.maximum(new_dp1[p:], dp0[:-p] + d) new_dp0 = np.maximum(new_dp0, dp1 + d) dp0 = new_dp0 dp1 = new_dp1 print(max(dp0.max(), dp1.max()))