program rom;
var
v,w,s:array[1..500]of longint;
b,f:array[0..500,0..5000]of longint;
n,i,j,mon:longint;
function max(x,y:longint):longint;
begin
if x>y then max:=x
else max:=y
end;
procedure print(k,mon:longint);
begin
if k>=1 then
begin
if b[k,mon]=1 then
begin
print(k-1,mon-v[k]*s[k]);
if k=n then write(k)
else write(k, )
end
else
print(k-1,mon)
end
end;
begin
readln(n,mon); fillchar(b,sizeof(b),0);
for i:=1 to n do
readln(v[i],w[i],s[i]);
fillchar(f,sizeof(f),0);
for i:=1 to n do
for j:=1 to mon do
begin
if j>=v[i]*s[i] then f[i,j]:=max(f[i-1,j],f[i-1,j-v[i]*s[i]]+w[i]*s[i])
else f[i,j]:=f[i-1,j];
if f[i,j]<>f[i-1,j]then b[i,j]:=1;
end;
writeln(f[n,mon]);
print(n,mon);
end.