#include <iostream>
#include<bits/stdc++.h>
using namespace std;
int nNum[105];
int w[105];
int v[105];
int f[10005];
int main()
{
int m,n;
cin>>n>>m;
for(int i=0;i<n;i++)
{
cin>>nNum[i]>>w[i]>>v[i];
}
memset(f,0,sizeof(f));
for(int i=0;i<n;i++)
{
for(int j=m;j>=w[i];j--)
{
for(int k=1;k<=nNum[i];k++)
{
if(w[i]*k>j) break;
if(f[j-w[i]*k]+v[i]*k>f[j])
{
f[j]=f[j-w[i]*k]+v[i]*k;
}
}
}
}
cout << f[m] << endl;
return 0;
}
有限个第二个循环需要从高到低m-0
无限个第二个循环需要从低到高0-m