from operator import itemgetter N,M=map(int,input().split()) J=[] for _ in range(N): v,w=map(int,input().split()) J.append((v,w)) J.sort(key=itemgetter(0),reverse=True) DP=[0]*(M+1) Ans=0 for v,w in J: for x in range(M,w-1,-1): Ans=max(Ans,v*(DP[x-w]+v)) DP[x]=max(DP[x], DP[x-w]+v) print(Ans)