#include "bits/stdc++.h"
using namespace std;
#define NAME "a"
#define fas() ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0);
#define Fin() if(NAME != ""){freopen(NAME".inp" , "r" , stdin);freopen(NAME".out" , "w" , stdout);}
#define int long long
#define endl "\n"
#define INF LLONG_MAX
struct info{
int w, v;
};
void solve(){
int n , m;
cin >> n >> m;
vector<info> a;
int u , v , c;
for(int i = 0 ; i < n ; i++){
cin >> u >> v >> c;
for(int j = 0 ; (1 << j) <= c; j++){
int tmp = 1 << j;
a.push_back({tmp * u , tmp * v});
c -= tmp;
}
if(c > 0)
a.push_back({c * u , c * v});
}
vector<int> dp(m+1 , 0);
for(int i = 0 ; i < a.size() ; i++){
for(int j = m ; j >= 0 ; j--)
if(a[i].w <= j){
dp[j] = max(dp[j - a[i].w] + a[i].v , dp[j]);
}
}
cout << *max_element(dp.begin() , dp.end()) << endl;
}
signed main(){
//Fin();
fas();
int t = 1;
//cin >> t;
while(t--){
solve();
}
return 0;
}
I2luY2x1ZGUgImJpdHMvc3RkYysrLmgiCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBOQU1FICJhIgojZGVmaW5lIGZhcygpICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTtjaW4udGllKDApO2NvdXQudGllKDApOwojZGVmaW5lIEZpbigpIGlmKE5BTUUgIT0gIiIpe2ZyZW9wZW4oTkFNRSIuaW5wIiAsICJyIiAsIHN0ZGluKTtmcmVvcGVuKE5BTUUiLm91dCIgLCAidyIgLCBzdGRvdXQpO30KI2RlZmluZSBpbnQgbG9uZyBsb25nCiNkZWZpbmUgZW5kbCAiXG4iCiNkZWZpbmUgSU5GIExMT05HX01BWAoKc3RydWN0IGluZm97CiAgICBpbnQgdywgdjsKfTsKCnZvaWQgc29sdmUoKXsKICAgIGludCBuICwgbTsKICAgIGNpbiA+PiBuID4+IG07CiAgICB2ZWN0b3I8aW5mbz4gYTsKICAgIGludCB1ICwgdiAsIGM7CiAgICBmb3IoaW50IGkgPSAwIDsgaSA8IG4gOyBpKyspewogICAgICAgIGNpbiA+PiB1ID4+IHYgPj4gYzsKICAgICAgICBmb3IoaW50IGogPSAwIDsgKDEgPDwgaikgPD0gYzsgaisrKXsKICAgICAgICAgICAgaW50IHRtcCA9IDEgPDwgajsKICAgICAgICAgICAgYS5wdXNoX2JhY2soe3RtcCAqIHUgLCB0bXAgKiB2fSk7CiAgICAgICAgICAgIGMgLT0gdG1wOwogICAgICAgIH0KICAgICAgICBpZihjID4gMCkKICAgICAgICAgICAgYS5wdXNoX2JhY2soe2MgKiB1ICwgYyAqIHZ9KTsKICAgIH0KCiAgICB2ZWN0b3I8aW50PiBkcChtKzEgLCAwKTsKCiAgICBmb3IoaW50IGkgPSAwIDsgaSA8IGEuc2l6ZSgpIDsgaSsrKXsKICAgICAgICBmb3IoaW50IGogPSBtIDsgaiA+PSAwIDsgai0tKQogICAgICAgICAgICBpZihhW2ldLncgPD0gail7CiAgICAgICAgICAgICAgICBkcFtqXSA9IG1heChkcFtqIC0gYVtpXS53XSArIGFbaV0udiAsIGRwW2pdKTsKICAgICAgICAgICAgfQogICAgfQoKICAgIGNvdXQgPDwgKm1heF9lbGVtZW50KGRwLmJlZ2luKCkgLCBkcC5lbmQoKSkgPDwgZW5kbDsKfQoKc2lnbmVkIG1haW4oKXsKICAgIC8vRmluKCk7CiAgICBmYXMoKTsKICAgIGludCB0ID0gMTsKICAgIC8vY2luID4+IHQ7CiAgICB3aGlsZSh0LS0pewogICAgICAgIHNvbHZlKCk7CiAgICB9CiAgICByZXR1cm4gMDsKfQo=