#include<bits/stdc++.h>
using namespace std;
int a,b,c,cnt=1,maxw,n;
int dp[100005];
int w[100005],v[100005];
int max(int a,int b){
return a>b?a:b;
}
int main(){
scanf("%d%d",&n,&maxw);
for(int i=1;i<=n;i++){
scanf("%d%d%d",&b,&a,&c);
if(c<0) c=1;
if(c==0){
for(int j=1;j<=maxw/(b*j);j<<=1){
v[++cnt]=j*a,w[cnt]=j*b;
}
continue;
}
for(int j=1;j<=c;j<<=1){
v[++cnt]=j*a,w[cnt]=j*b;
c-=j;
}
if(c){
v[++cnt]=a*c;
w[cnt]=b*c;
}
}
for(int i=1;i<=cnt;i++){
for(int j=maxw;j>=w[i];--j){
dp[j]=max(dp[j],dp[j-w[i]]+v[i]);
}
}
printf("%d",dp[maxw]);
return 0;
}
/**************************************************************
Problem: 1905
User: liangshinan
Language: C++
Result: Accepted
Time:133 ms
Memory:3248 kb
****************************************************************/