import sys input=lambda:sys.stdin.readline().rstrip() N,M=map(int,input().split()) jewel=[tuple(map(int,input().split())) for i in range(N)] jewel=sorted(jewel,key=lambda x:-x[0]) dp=[[-float('inf') for i in range(M+1)] for j in range(N+1)] dp[0][0]=0 ans=0 for i in range(1,N+1): V,W=jewel[i-1] Mx=-float('inf') for j in range(M+1): if j-W>=0 and dp[i-1][j-W]+V>dp[i-1][j]: dp[i][j]=dp[i-1][j-W]+V else: dp[i][j]=dp[i-1][j] Mx=max(Mx,dp[i][j]) ans=max(ans,V*Mx) print(ans)