#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define N 3005struct node{ int t,s;}pnt[N];bool cmp(const node &a,const node &b){ int v1=(a.t+b.t)*a.s+b.t*b.s; int v2=(a.t+b.t)*b.s+a.t*a.s; return v1<v2;}int dp[10005];int main(){ int n,T; while(cin>>n>>T){ for(int i=0;i<n;i++) scanf("%d%d",&pnt[i].t,&pnt[i].s); sort(pnt,pnt+n,cmp); memset(dp,0,sizeof(dp)); for(int i=0;i<n;i++){ for(int j=T;j>0;j--){ if(pnt[i].t>j) break; dp[j]=max(dp[j],dp[j-pnt[i].t]+j*pnt[i].s); } } printf("%dn",dp[T]); } return 0;}


