def max_flavor(N, I, ramen): dp = [[0]*(I+1) for _ in range(N+1)] ramen.sort(key=lambda x: x[0]) for i in range(N): si, ai = ramen[i] for j in range(I+1): if j < si: dp[i+1][j] = dp[i][j] else: dp[i+1][j] = max(dp[i][j], dp[i][j-si] + ai) return dp[N][I] N, I = map(int, input().split()) ramen = [] for _ in range(N): s, a =map(int, input().split()) ramen.append((s, a)) print(max_flavor(N, I, ramen))