#include<bits/stdc++.h>
using namespace std;
const int N=105;
int n,W,v[N],w[N],m[N],dp[N][40005];
int main(){
cin>>n>>W;
for(int i=1;i<=n;i++)
cin>>v[i]>>w[i]>>m[i];
for(int i=1;i<=n;i++){
int cnt=0,vv[20],ww[20],rm=m[i];
memset(vv,0,sizeof vv);
memset(ww,0,sizeof ww);
for(int p=1;p<=rm;p*=2){
vv[++cnt]=p*v[i];
ww[cnt]=p*w[i];
rm-=p;
}
if(rm>0){
vv[++cnt]=rm*v[i];
ww[cnt]=rm*w[i];
}
for(int j=1;j<=W;j++){
dp[i][j]=dp[i-1][j];
for(int k=1;k<=cnt;k++){
if(j>=ww[k]){
dp[i][j]=max(dp[i][j],dp[i-1][j-ww[k]]+vv[k]);
}
}
}
}
cout<<dp[n][W];
return 0;
}