#include<bits/stdc++.h>
using namespace std;
const long long MaxN = 2e5 + 5;
long long n, W;
long long w[MaxN], v[MaxN];
long long dp[MaxN];
long long cnt = 0;
void knapsack()
{
for(long long i = 1; i <= cnt; i++)
{
for(long long j = W; j >= w[i]; j--)
{
dp[j] = max(dp[j], dp[j - w[i]] + v[i]);
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> W;
for(long long i = 1; i <= n; i++)
{
long long x, y, c;
cin >> x >> y >> c;
long long k = 1;
while(k <= c)
{
cnt++;
w[cnt] = x * k;
v[cnt] = y * k;
c -= k;
k <<= 1;
}
if(c)
{
cnt++;
w[cnt] = x * c;
v[cnt] = y * c;
}
}
knapsack();
cout << dp[W];
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNvbnN0IGxvbmcgbG9uZyBNYXhOID0gMmU1ICsgNTsKCmxvbmcgbG9uZyBuLCBXOwpsb25nIGxvbmcgd1tNYXhOXSwgdltNYXhOXTsKbG9uZyBsb25nIGRwW01heE5dOwoKbG9uZyBsb25nIGNudCA9IDA7Cgp2b2lkIGtuYXBzYWNrKCkKewogICAgZm9yKGxvbmcgbG9uZyBpID0gMTsgaSA8PSBjbnQ7IGkrKykKICAgIHsKICAgICAgICBmb3IobG9uZyBsb25nIGogPSBXOyBqID49IHdbaV07IGotLSkKICAgICAgICB7CiAgICAgICAgICAgIGRwW2pdID0gbWF4KGRwW2pdLCBkcFtqIC0gd1tpXV0gKyB2W2ldKTsKICAgICAgICB9CiAgICB9Cn0KCmludCBtYWluKCkKewogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKICAgIGNpbi50aWUoMCk7CgogICAgY2luID4+IG4gPj4gVzsKCiAgICBmb3IobG9uZyBsb25nIGkgPSAxOyBpIDw9IG47IGkrKykKICAgIHsKICAgICAgICBsb25nIGxvbmcgeCwgeSwgYzsKICAgICAgICBjaW4gPj4geCA+PiB5ID4+IGM7CgogICAgICAgIGxvbmcgbG9uZyBrID0gMTsKCiAgICAgICAgd2hpbGUoayA8PSBjKQogICAgICAgIHsKICAgICAgICAgICAgY250Kys7CiAgICAgICAgICAgIHdbY250XSA9IHggKiBrOwogICAgICAgICAgICB2W2NudF0gPSB5ICogazsKCiAgICAgICAgICAgIGMgLT0gazsKICAgICAgICAgICAgayA8PD0gMTsKICAgICAgICB9CgogICAgICAgIGlmKGMpCiAgICAgICAgewogICAgICAgICAgICBjbnQrKzsKICAgICAgICAgICAgd1tjbnRdID0geCAqIGM7CiAgICAgICAgICAgIHZbY250XSA9IHkgKiBjOwogICAgICAgIH0KICAgIH0KCiAgICBrbmFwc2FjaygpOwoKICAgIGNvdXQgPDwgZHBbV107Cn0=