n, k = map(int, input().split()) S, A = [], [] dp = [[-1] * (k+1) for _ in range(n+1)] dp[0][0] = 0 for i in range(n): s, a = map(int, input().split()) S.append(s) A.append(a) for i in range(n): for j in range(k + 1): if dp[i][j] < 0: continue dp[i+1][j] = max(dp[i+1][j], dp[i][j]) if j + S[i] <= k: dp[i+1][j+S[i]] = max(dp[i+1][j+S[i]], dp[i][j] + A[i]) print(max(dp[n]))