#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
****************************************************************/