#include<bits/stdc++.h> using namespace std; int main(){ ios::sync_with_stdio(false); cin.tie(nullptr); int N,M; cin>>N>>M; vector<array<int,2>>A(N); for(int i=0;i<N;i++)cin>>A[i][0]>>A[i][1]; sort(A.begin(),A.end(),[](array<int,2>a, array<int,2>b){ return a[0]>b[0]; }); long long ans=0; vector<long long>dp(M+1,-1e18); dp[0]=0; for(int i=0;i<N;i++){ for(int j=M;j>=0;j--){ if(j+A[i][1]<=M&&dp[j]>=0){ dp[j+A[i][1]]=max(dp[j+A[i][1]],dp[j]+A[i][0]); ans=max(ans,dp[j+A[i][1]]*A[i][0]); } } } cout<<ans<<'\n'; }