#include <bits/stdc++.h>
using namespace std;
#define fi first
#define se second
#define superspeed ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
#define file(name) freopen(name".inp", "r", stdin);\
freopen(name".out", "w", stdout);
typedef long long ll;
typedef pair <long long, long long> pll;
typedef vector <long long> vll;
const ll Mod = 1e9 + 7;
ll N, M, F[100005];
vll W, V;
int main() {
superspeed;
#ifndef ONLINE_JUDGE
file("dttui2");
#endif
cin >> N >> M;
W.push_back(0);
V.push_back(0);
while (N--) {
ll w, v, a;
cin >> a >> w >> v;
ll pow2 = 1;
while (a >= pow2) {
a -= pow2;
W.push_back(w * pow2);
V.push_back(v * pow2);
pow2 *= 2;
}
if (a > 0) {
W.push_back(w * a);
V.push_back(v * a);
}
}
N = W.size() - 1;
for (ll i = 1; i <= N; ++i)
for (ll w = M; w >= 0; --w)
if (w >= W[i]) F[w] = max(F[w], V[i] + F[w - W[i]]);
cout << F[M];
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSAgICAgICAgICBmaSAgZmlyc3QKI2RlZmluZSAgICAgICAgICBzZSAgc2Vjb25kCiNkZWZpbmUgIHN1cGVyc3BlZWQgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOyBjaW4udGllKE5VTEwpOyBjb3V0LnRpZShOVUxMKTsKI2RlZmluZSAgZmlsZShuYW1lKSAgZnJlb3BlbihuYW1lIi5pbnAiLCAiciIsIHN0ZGluKTtcCiAgICAgICAgICAgICAgICAgICAgIGZyZW9wZW4obmFtZSIub3V0IiwgInciLCBzdGRvdXQpOwoKdHlwZWRlZiAgICAgICAgICAgICAgICAgICBsb25nIGxvbmcgIGxsOwp0eXBlZGVmIHBhaXIgPGxvbmcgbG9uZywgbG9uZyBsb25nPiAgcGxsOwp0eXBlZGVmICAgICAgICAgIHZlY3RvciA8bG9uZyBsb25nPiAgdmxsOwoKY29uc3QgbGwgTW9kID0gMWU5ICsgNzsKCmxsIE4sIE0sIEZbMTAwMDA1XTsKdmxsIFcsIFY7CgppbnQgbWFpbigpIHsKICAgIHN1cGVyc3BlZWQ7CiNpZm5kZWYgT05MSU5FX0pVREdFCglmaWxlKCJkdHR1aTIiKTsKI2VuZGlmCiAgICBjaW4gPj4gTiA+PiBNOwogICAgVy5wdXNoX2JhY2soMCk7CiAgICBWLnB1c2hfYmFjaygwKTsKICAgIHdoaWxlIChOLS0pIHsKICAgICAgICBsbCB3LCB2LCBhOwogICAgICAgIGNpbiA+PiBhID4+IHcgPj4gdjsKICAgICAgICBsbCBwb3cyID0gMTsKICAgICAgICB3aGlsZSAoYSA+PSBwb3cyKSB7CiAgICAgICAgICAgIGEgLT0gcG93MjsKICAgICAgICAgICAgVy5wdXNoX2JhY2sodyAqIHBvdzIpOwogICAgICAgICAgICBWLnB1c2hfYmFjayh2ICogcG93Mik7CiAgICAgICAgICAgIHBvdzIgKj0gMjsKICAgICAgICB9CiAgICAgICAgaWYgKGEgPiAwKSB7CiAgICAgICAgICAgIFcucHVzaF9iYWNrKHcgKiBhKTsKICAgICAgICAgICAgVi5wdXNoX2JhY2sodiAqIGEpOwogICAgICAgIH0KICAgIH0KICAgIE4gPSBXLnNpemUoKSAtIDE7CiAgICBmb3IgKGxsIGkgPSAxOyBpIDw9IE47ICsraSkKICAgICAgICBmb3IgKGxsIHcgPSBNOyB3ID49IDA7IC0tdykKICAgICAgICAgICAgaWYgKHcgPj0gV1tpXSkgRlt3XSA9IG1heChGW3ddLCBWW2ldICsgRlt3IC0gV1tpXV0pOwogICAgY291dCA8PCBGW01dOwogICAgcmV0dXJuIDA7Cn0K