#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];
}