`
import java.util.Scanner;
import java.util.ArrayList;
class Main{
static int N = 2010;
static int n,m;
static int[] f = new int[N];
static class Goods{
int v;
int w;
public Goods(int v, int w){
this.v = v;
this.w = w;
}
}
static Scanner sc = new Scanner(System.in);
public static void main(String args[]) throws Exception{
ArrayList<Goods> goods = new ArrayList<>();
n = sc.nextInt(); m = sc.nextInt();
for(int i = 0; i < n; i ++) {
int v, w, s;
v = sc.nextInt();
w = sc.nextInt();
s = sc.nextInt();
for(int k = 1; k <= s; k *= 2) {
s -= k;
goods.add(new Goods(v * k, w * k));
}
if(s > 0) goods.add(new Goods(s * v, s * w));
}
for(Goods good : goods)
for(int j = m; j >= good.v; j --)
f[j] = Math.max(f[j], f[j - good.v] + good.w);
System.out.println(f[m]);
}
}
`