#include <bits/stdc++.h>
using namespace std;
const int N=50005;
int n,nn,V,w[N],v[N],dp[N][6005];
int main(){
ios::sync_with_stdio(false);
cin>>n>>V;
for(int i=1;i<=n;i++){
int t=1,x,y,s;
cin>>x>>y>>s;
while(s>=t){
w[++nn]=t*x;
v[nn]=t*y;
s-=t;
t*=2;
}
if(!s)continue;
w[++nn]=t*x;
v[nn]=t*y;
}
for(int j=w[1];j<=V;j++)dp[1][j]=v[1];
for(int i=2;i<=nn;i++){
for(int j=0;j<=V;j++){
if(j<w[i])dp[i][j]=dp[i-1][j];
else dp[i][j]=max(dp[i-1][j-w[i]]+v[i],dp[i-1][j]);
}
}
cout<<dp[nn][V];
return 0;
}
//ans=max({a,b,c,d})