N,M = map(int, input().split()) A = [list(map(int, input().split())) for _ in range(N)] A = [0]+sorted(A,key=lambda x:x[0],reverse=True) INFTY = 10**10 dp = [[-INFTY for _ in range(M+1)] for _ in range(N+1)] for j in range(1,M+1): if j>=A[1][1]: dp[1][j] = A[1][0] for i in range(2,N+1): for j in range(1,M+1): dp[i][j] = dp[i-1][j] if j>=A[i][1]: dp[i][j] = max(dp[i][j],dp[i-1][j-A[i][1]]+A[i][0]) ans = 0 for i in range(1,N+1): ans = max(ans,A[i][0]*dp[i][M]) print(ans)