import sys input = sys.stdin.readline N, M = map(int, input().split()) VW = [tuple(map(int, input().split())) for _ in range(N)] VW.sort(reverse=True) dp = [[0]*(M+1) for _ in range(N+1)] ans = 0 for i in range(N): V, W = VW[i] for j in range(M+1): dp[i+1][j] = max(dp[i+1][j], dp[i][j]) if j+W<=M: dp[i+1][j+W] = max(dp[i+1][j+W], dp[i][j]+V) ans = max(ans, dp[i+1][j+W]*V) print(ans)