#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';
}