const md=20000000000;
var a:array[0..2000] of longint;
v:array[0..2000] of boolean;
n,m,i,j,k,sum:longint;
l,r,mid:int64;
procedure ok;
var i,j,k:longint;
now,tot:int64;
begin
now:=0; tot:=0;
fillchar(v,sizeof(v),0);
for i:=1 to m do
begin
if (mid-1) mod a[i]=0 then
begin
inc(now); v[i]:=true;
end;
tot:=tot+(mid-2+a[i]) div a[i];
end;
if tot>=n then begin r:=mid-1; exit; end;
if tot+now<n then begin l:=mid+1; exit; end;
for i:=1 to m do
if v[i] then
begin
inc(tot);
if tot=n then
begin
writeln(i); halt;
end;
end;
end;
begin
readln(n,m);
for i:=1 to m do read(a[i]);
l:=0; r:=md;
while l<=r do
begin
mid:=(l+r) div 2;
ok;
end;
end.