const fi='SOFTWARE.inp'; fo='SOFTWARE.out';
MAXN = 105;
SUMMAXVAL = 3000005;
var
sump,sumc,n,SUMMAX:longint;
p,c:array[0..MAXN] of integer;
F:array[0..SUMMAXVAL] of longint;
Trace:array[0..MAXN,0..SUMMAXVAL] of byte;
procedure Inp;
var i,j:longint;
begin
read(n);
for i:=1 to n do begin
read(p[i]);
inc(sump,p[i]);
end;
for i:=1 to n do begin
read(c[i]);
inc(sumc,c[i]);
end;
if (sump>sumc) then SUMMAX:=sump else SUMMAX:=sumc;
end;
procedure Calc(t:longint);
var i,j:longint;
begin
for i:=1 to n do
for j:=t downto 1 do begin
if F[j-1]>F[j] then begin
F[j]:=F[j-1];
Trace[i][j]:=1;
end else begin
Trace[i][j]:=2;
end;
if (j-c[i]>=0) and (F[j-c[i]] + p[i]>F[j]) then begin
F[j] := F[j-c[i]] + p[i];
Trace[i][j]:=3;
end;
end;
end;
procedure Main;
var ans,i,j,l,r,k:longint;
codec:array[0..MAXN] of boolean;
begin
Calc(SUMMAX);
for i:=1 to SUMMAX do
if (sump-F[i]<=i) then break;
writeln(i);
j:=i; i:=n;
fillchar(codec,sizeof(codec),false);
while (i<>0) and (j<>0) do begin
if (Trace[i][j]=1) then dec(j)
else if (Trace[i][j]=2) then dec(i)
else begin
codec[i]:=true;
dec(j,c[i]); dec(i);
end;
end;
for i:=1 to n do
if (codec[i]=false) then write(i,' ');
writeln;
for i:=1 to n do if (codec[i]) then write(i,' ');
end;
begin
Inp;
Main;
end.
Y29uc3QgZmk9J1NPRlRXQVJFLmlucCc7IGZvPSdTT0ZUV0FSRS5vdXQnOwogICAgIE1BWE4gPSAxMDU7CiAgICAgU1VNTUFYVkFMID0gMzAwMDAwNTsKdmFyCglzdW1wLHN1bWMsbixTVU1NQVg6bG9uZ2ludDsKCXAsYzphcnJheVswLi5NQVhOXSBvZiBpbnRlZ2VyOwoJRjphcnJheVswLi5TVU1NQVhWQUxdIG9mIGxvbmdpbnQ7CglUcmFjZTphcnJheVswLi5NQVhOLDAuLlNVTU1BWFZBTF0gb2YgYnl0ZTsKcHJvY2VkdXJlIElucDsKdmFyIGksajpsb25naW50OwpiZWdpbgoJcmVhZChuKTsKCWZvciBpOj0xIHRvIG4gZG8gYmVnaW4KCQlyZWFkKHBbaV0pOwogICAgICBpbmMoc3VtcCxwW2ldKTsKCWVuZDsKICAgZm9yIGk6PTEgdG8gbiBkbyBiZWdpbgoJCXJlYWQoY1tpXSk7CgkJaW5jKHN1bWMsY1tpXSk7CgllbmQ7CglpZiAoc3VtcD5zdW1jKSB0aGVuIFNVTU1BWDo9c3VtcCBlbHNlIFNVTU1BWDo9c3VtYzsKZW5kOwoKcHJvY2VkdXJlIENhbGModDpsb25naW50KTsKdmFyIGksajpsb25naW50OwpiZWdpbgoJZm9yIGk6PTEgdG8gbiBkbwoJICBmb3Igajo9dCBkb3dudG8gMSBkbyBiZWdpbgoJCSAgaWYgRltqLTFdPkZbal0gdGhlbiBiZWdpbgoJCQkJRltqXTo9RltqLTFdOwoJCQkJVHJhY2VbaV1bal06PTE7CgkJCWVuZCBlbHNlIGJlZ2luCgkJCQlUcmFjZVtpXVtqXTo9MjsKCQkJZW5kOwoJCSAgaWYgKGotY1tpXT49MCkgYW5kIChGW2otY1tpXV0gKyBwW2ldPkZbal0pIHRoZW4gYmVnaW4KCQkJCUZbal0gOj0gRltqLWNbaV1dICsgcFtpXTsKCQkJCVRyYWNlW2ldW2pdOj0zOwoJCQllbmQ7CgkJZW5kOwplbmQ7Cgpwcm9jZWR1cmUgTWFpbjsKdmFyIGFucyxpLGosbCxyLGs6bG9uZ2ludDsKICAgIGNvZGVjOmFycmF5WzAuLk1BWE5dIG9mIGJvb2xlYW47CmJlZ2luCglDYWxjKFNVTU1BWCk7Cglmb3IgaTo9MSB0byBTVU1NQVggZG8KCSAgaWYgKHN1bXAtRltpXTw9aSkgdGhlbiBicmVhazsKCXdyaXRlbG4oaSk7CglqOj1pOyBpOj1uOwoJZmlsbGNoYXIoY29kZWMsc2l6ZW9mKGNvZGVjKSxmYWxzZSk7Cgl3aGlsZSAoaTw+MCkgYW5kIChqPD4wKSBkbyBiZWdpbgoJCWlmIChUcmFjZVtpXVtqXT0xKSB0aGVuIGRlYyhqKQoJCWVsc2UgaWYgKFRyYWNlW2ldW2pdPTIpIHRoZW4gZGVjKGkpCgkJZWxzZSBiZWdpbgoJCQljb2RlY1tpXTo9dHJ1ZTsKICAgICAgICAgZGVjKGosY1tpXSk7IGRlYyhpKTsKCQllbmQ7CgllbmQ7Cglmb3IgaTo9MSB0byBuIGRvCgkgaWYgKGNvZGVjW2ldPWZhbHNlKSB0aGVuIHdyaXRlKGksJyAnKTsKCSB3cml0ZWxuOwoJZm9yIGk6PTEgdG8gbiBkbyBpZiAoY29kZWNbaV0pIHRoZW4gd3JpdGUoaSwnICcpOwplbmQ7CgpiZWdpbgoKCUlucDsKCU1haW47CmVuZC4K