N, I = map(int, input().split()) inf = 10 ** 18 pre = [-inf] * (I + 1) pre[0] = 0 for i in range(N): s, a = map(int, input().split()) dp = [-inf] * (I + 1) for j in range(I + 1): dp[j] = max(dp[j], pre[j]) if j + s > I: continue dp[j + s] = max(dp[j + s], pre[j] + a) dp, pre = pre, dp print(max(pre))