var
n,m,point,sum,ans,k:int64;
i,j:longint;
f:array[0..5000000] of longint;
a:array[1..500] of int64;
begin
assign(input,'team.in');
assign(output,'team.out');
reset(input);
rewrite(output);
read(m,n);
for i:=1 to n do
begin
read(a[i]);
sum:=sum+a[i];
end;
for i:=1 to n do
begin
for j:=sum downto 1 do
begin
if a[i]=j then
f[j]:=f[j]+1;
if j-a[i]>0 then
f[j]:=f[j]+f[j-a[i]];
if f[j]>m then
f[j]:=m;
end;
end;
point:=sum;
while (m>0) do
begin
if m>f[point] then
begin
ans:=ans+point*f[point];
m:=m-f[point];
end
else
begin
ans:=ans+point*m;
m:=0;
end;
dec(point);
end;
writeln(ans);
close(input);
close(output);
end.