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.
