//多重背包 max
#include <iostream>
using namespace std;
const int N = ;
int n, m;
int f[N];
int main() {
cin >> n >> m;
for (int i = ; i < n; i ++ ) {
int v, w, s;
cin >> v >> w >> s;
for (int j = m; j >= ; j -- )
for (int k = ; k <= s && k * v <= j; k ++ )
f[j] = max(f[j], f[j - k * v] + k * w);
}
cout << f[m] << endl;
return ;
}