#include <bits/stdc++.h>
using namespace std;
int n,V;
struct kk {
	int w,v,m;
};
kk a[1001];
int f[20001];
void completebag(int v,int w) {
	for(register int i=v; i<=V; ++i)
		f[i]=max(f[i],f[i-v]+w);
	return;
}
void zeronebag(int v,int w) {
	for(register int i=V; i>=v; --i)
		f[i]=max(f[i],f[i-v]+w);
	return;
}
void multiplebag(int v,int w,int m) {
	if(m*v>V) {
		completebag(v,w);
		return;
	}
	int k=1;
	while(k<=m) {
		zeronebag(v*k,w*k);
		m-=k;
		k*=2;
	}
	zeronebag(v*m,w*m);
	return;
}
int main() {
	scanf("%d%d",&n,&V);
	for(register int i=1; i<=n; ++i)
		scanf("%d%d%d",&a[i].v,&a[i].w,&a[i].m);
	memset(f,0x0,sizeof(f));
	for(register int i=1; i<=n; ++i) {
		if(a[i].m==-1) zeronebag(a[i].v,a[i].w);
		if(a[i].m==0) completebag(a[i].v,a[i].w);
		if(a[i].m>0) multiplebag(a[i].v,a[i].w,a[i].m);
	}
	printf("%d\n",f[V]);

	return 0;
}

/**************************************************************
	Problem: 1905
	User: admin
	Language: C++
	Result: Accepted
	Time:31 ms
	Memory:2168 kb
****************************************************************/