program ss; var i, j, min, max: integer; D, M: integer; R, R2: real; nakoupeno, zbytek, vydelek: integer; pole: array[1..70000] of integer; begin repeat read(D); if D=0 then break; read(M); for i:=1 to D do begin read(J); pole[i]:=J; end; {1} R2:=1; min:=0; max:=0; nakoupeno:=0; zbytek:=0; vydelek:=0; for i:=1 to D do for j:=1 to D do begin if j>i then begin R:=pole[j]/pole[i]; if R > R2 then begin min:=i; max:=j; R2:=pole[max]/pole[min]; end; end; end; {2} if min <> 0 then begin nakoupeno:=M div pole[min]; zbytek:=M mod pole[min]; vydelek:=zbytek+(nakoupeno*pole[max])-M; writeln(vydelek); end else writeln(0); until D=0; end.