#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
const int N = 1010;
int f[N];
int n,m;
int main(){
cin>>n>>m;
while(n--){
int v,w,s;
cin>>v>>w>>s;
if(s==0){
for(int i=v;i<=m;i++)f[i]=max(f[i],f[i-v]+w);
}
else{
if(s==-1)s=1;
for(int k=1;k<=s;k<<=1){
for(int i=m;i>=k*v;i--)f[i]=max(f[i],f[i-k*v]+k*w);
s-=k;
}
if(s){
for(int i=m;i>=s*v;i--)f[i]=max(f[i],f[i-s*v]+s*w);
}
}
}
cout<<f[m]<<endl;
}
浙公网安备 33010602011771号