N, M = map(int, input().split()) dp = [-1 for _ in range(M + 1)] dp[0] = 0 ans = 0 X = [] for i in range(N): C, D = map(int, input().split()) if C == 0: ans += D else: X.append((C, D)) X.sort() res = 0 for c, d in X: for m in range(M, -1, -1): e = dp[m] if e == -1: continue if 2 * m + c <= M: dp[2 * m + c] = max(dp[2 * m + c], e + d) res = max(res, max(dp)) ans += res print(ans)