#include<bits/stdc++.h>
#define Maxn 100006
using namespace std;
int N,V;
int w[Maxn],v[Maxn],tot,s[Maxn];//tot计数
long long dp[Maxn];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);
cin>>N>>V;
for(int i=1,_v,_w,_s;i<=N;i++){
cin>>_v>>_w>>_s;
if(_s==-1)//只能用一次
_s=1;
else if(!_s)//能有无限次
_s=(V/_v)+1;//全选情况最多个数
int k=1;
while(_s>k){
_s-=k;
w[++tot]=_w*k;v[tot]=_v*k;//s[tot]=k;
k=k*2;
//cout<<_s<<" "<<k<<endl;
}//二进制优化
if(_s>0){
w[++tot]=_w*_s;v[tot]=_v*_s;//s[tot]=_s;
//cout<<_s<<endl;
}//剩余处理
}
for(int i=1;i<=tot;i++){
for(int j=V;j>=v[i];j--){
dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
}
//cout<<v[i]<<" "<<w[i]<<" "<<s[i]<<'\n';
}//经典DP
cout<<dp[V];
return 0;
}
/**************************************************************
Problem: 1905
User: chenxurui
Language: C++
Result: Accepted
Time:32 ms
Memory:4184 kb
****************************************************************/