#include<bits/stdc++.h>
using namespace std;
struct FUCK{
int t,l,c;
}a[10020];
long long c[4000020];
int t,n;
int _01(int i,int k){
//for(int j=t;j>=a[i].t;--j)
// c[j]=0;
for(int j=t;j>=a[i].t*k;--j)
c[j]=max(c[j],c[j-a[i].t*k]+a[i].l*k);
}
int wq(int i){
//for(int j=a[i].t;j<=t;++j)
// c[j]=0;
for(int j=a[i].t;j<=t;++j)
c[j]=max(c[j],c[j-a[i].t]+a[i].l);
}
int main(){
cin>>n>>t;
for(int i=1;i<=n;++i)
cin>>a[i].l>>a[i].t>>a[i].c;
for(int i=1;i<=n;++i)
{
if(a[i].c*a[i].t>=t||a[i].c==0)
wq(i);
else
{
int k=1;
int m=a[i].c;
while(k<m)
{
_01(i,k);
m-=k;
k*=2;
}
_01(i,m);
}
}
cout<<c[t];
return 0;
}