<Problem>
http://ntucoder.net/Problem/Details/1147
Uses Crt,Math;
Var n,m,i,j:longint;
w,v:array[-10..1000] of longint;
a:array[-10..1000,-10..1000] of longint;
Begin
readln(n,m);
for i:=1 to n do readln(w[i],v[i]);
for i:=1 to n do
for j:=1 to m do
if j>=w[i] then
a[i,j]:=max(a[i-1,j],a[i-1,j-w[i]]+v[i])
else
a[i,j]:=a[i-1,j];
writeln(a[n,m]);
i:=n;j:=m;
while (i>=1) and (j>=1) and (a[i,j]<>0) do
begin
while a[i,j]=a[i-1,j] do dec(i);
write(i,' ');
j:=j-w[i]; i:=i-1;
end;
readln;
End.