#include<iostream>
#include<algorithm>
using namespace std;
const int M=500005;
int N,V,v[M],w[M],s[M],dp[M];
int main(){
cin>>N>>V;
for(int i=1;i<=N;i++){
cin>>v[i]>>w[i]>>s[i];
}
//装包(转化为01背包问题)
int k=N+1;
for(int i=1;i<=N;i++){
while(s[i]>1){//说明有多个物品
v[k]=v[i];
w[k]=w[i];
k++;
s[i]--;
}
}
for(int i=1;i<=k;i++){//注意物品数量是k不是N
for(int j=V;j>=v[i];j--){
dp[j]=max(dp[j],dp[j-v[i]]+w[i]);
}
}
cout<<dp[V]<<endl;
return 0;
}