'''
空间复杂压缩为1维的解法
状态转移
dp(i, j)表示前i个物品在容量是j的情况下的最大总价值
cost[i] 表示物品开销
val[i] 表示物品价值
dp(i, j) = max ( dp(i-1, j), dp(i-1, j-cost[i]) + val[i] )
'''
n, v = map(int, input().split())
arr = []
for i in range(n):
a, b = map(int, input().split())
arr.append((a, b))
dp = [0] * (v + 1)
for i in range(n):
for j in range(v, -1, -1):
if i == 0:
dp[j] = arr[i][1] if j >= arr[i][0] else 0
else:
if j >= arr[i][0]:
dp[j] = max(dp[j], arr[i][1] + dp[j - arr[i][0]])
print(dp[v])