#include<bits/stdc++.h>
using namespace std;
int n,vv,v[1001],w[1001],s[1001],a[1000001],b[1000001],cnt=1,dp[1001];
bool c[1000001];
int main(){
	cin>>n>>vv;//输入 
	for(int i=1;i<=n;i++){//输入数组 
		cin>>v[i]>>w[i]>>s[i];
		if(s[i]==-1)//01背包 
		{
			a[cnt]=v[i];//体积 
			b[cnt]=w[i];//价值 
			cnt++;//编号 
		}
		if(s[i]==0){//完全背包 
			a[cnt]=v[i];//体积
			b[cnt]=w[i];//价值
			c[cnt]=1;//标记无限个 
			cnt++;//编号
		}
		else{//多重背包 
			for(int j=1;j<=s[i];j++){//变成01背包 
				a[cnt]=v[i];//体积
				b[cnt]=w[i];//价值
				cnt++;//编号
			}
		}
		//cout<<"--"<<cnt<<"\n";
	}
//	for(int i=1;i<=cnt;i++)
//		cout<<a[i]<<" "<<b[i]<<'\n'; 
	for(int i=1;i<=cnt;i++){
		if(c[i]==0){//01背包 
			for(int j=vv;j>=a[i];j--){
            	dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
        	}
		}
        else{//多重背包 
        	for(int j=a[i];j<=vv;j++){
            	dp[j]=max(dp[j],dp[j-a[i]]+b[i]);
        	}
        }
    } 
    cout<<dp[vv];
    return 0;
}
/**************************************************************
	Problem: 1905
	User: wuyunfeng
	Language: C++
	Result: Accepted
	Time:258 ms
	Memory:10876 kb
****************************************************************/