program ss; var a, b,i,j, pomi, pomj, max, poc, nakup, maxx, minn, posmin, posmax: longint; pole1: array [1..25000] of longint; pole2: array [25001..50000] of longint; pole3: array [50001..70000] of longint; begin repeat minn := 40001; maxx := -1; posmax := 0; posmin := 0; read(a); if (a<>0) then begin readln(b); if (a < 25001) then begin for i := 1 to a do begin read(pole1[i]); if pole1[i] > maxx then begin maxx := pole1[i]; posmax := i; end; if pole1[i] < minn then begin minn := pole1[i]; posmin := i; end; end; end else if (a < 50001) then begin for i := 1 to 25000 do begin read(pole1[i]); if pole1[i] > maxx then begin maxx := pole1[i]; posmax := i; end; if pole1[i] < minn then begin minn := pole1[i]; posmin := i; end; end; for i := 25001 to a do begin read(pole2[i]); if pole2[i] > maxx then begin maxx := pole2[i]; posmax := i; end; if pole2[i] < minn then begin minn := pole2[i]; posmin := i; end; end end else begin for i := 1 to 25000 do read(pole1[i]); if pole1[i] > maxx then begin maxx := pole1[i]; posmax := i; end; if pole1[i] < minn then begin minn := pole1[i]; posmin := i; end; for i := 25001 to 50000 do read(pole2[i]); if pole2[i] > maxx then begin maxx := pole2[i]; posmax := i; end; if pole2[i] < minn then begin minn := pole2[i]; posmin := i; end; for i := 50001 to a do read(pole3[i]); if pole3[i] > maxx then begin maxx := pole3[i]; posmax := i; end; if pole3[i] < minn then begin minn := pole3[i]; posmin := i; end; end; readln; if (posmin < posmax) then begin if posmin< 25001 then begin pomi:= pole1[posmin]; end else if posmin< 50001 then begin pomi:= pole2[posmin]; end else pomi:= pole3[posmin]; if posmax< 25001 then begin pomj:= pole1[posmax]; end else if posmax< 50001 then begin pomj:= pole2[posmax]; end else pomj:= pole3[posmax]; writeln(pomj*(b div pomi)-(b div pomi)*pomi); end else begin max := 0; for i:= 1 to a-1 do begin if i< 25001 then begin pomi:= pole1[i]; end else if i< 50001 then begin pomi:= pole2[i]; end else pomi:= pole3[i]; if b >= pomi then begin poc := b div pomi; nakup := poc * pomi; for j:= i+1 to a do begin if j< 25001 then begin pomj:= pole1[j]; end else if j< 50001 then begin pomj:= pole2[j]; end else pomj:= pole3[j]; if max < (poc * pomj)-nakup then max := (poc * pomj)-nakup; end; end; end; writeln(max); end; end; until (a = 0); end.