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