#include<iostream>
using namespace std;
int v[100009],w[100009],dp[100005];
int main(){
int n,W,cnt=0;
cin>>n>>W;
for(int i=0;i<n;i++){
int a,b,c;
cin>>a>>b>>c;
int p=1;
if(c>=p){
c-=p;
v[++cnt]+=a*p,w[cnt]+=b*p;
p*=2;
}
if(c>0) v[++cnt]+=c*a,w[cnt]+=c*b;
}
for(int i=1;i<=cnt;i++){
for(int j=W;j>=w[i];j--){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
cout<<dp[W];
return 0;
}