mm=10000;
h=20;
type
arr=array[1..h]of longint;
var
m,n,i,j,k,l:longint;
a:array[1..4]of longint;
f:array[-100000..100000]of arr;
a1,a2:arr;
function t1(a,b:arr):arr; //相加
var i:longint;tmp:arr;
begin
fillchar(tmp,sizeof(tmp),0);
for i:=1 to h-1 do
begin
tmp[i]:=tmp[i]+a[i]+b[i];
tmp[i+1]:=tmp[i]div mm;
tmp[i]:=tmp[i]mod mm;
end;
exit(tmp);
end;
function t2(a:arr):arr; //乘二
var i:longint;tmp:arr;
begin
fillchar(tmp,sizeof(tmp),0);
for i:=1 to h-1 do
begin
tmp[i]:=tmp[i]+a[i]*2;
tmp[i+1]:=tmp[i]div mm;
tmp[i]:=tmp[i]mod mm;
end;
exit(tmp);
end;
function comp(a,b:arr):boolean;
var i:longint;
begin
for i:=h downto 1 do
if a[i]>b[i]then exit(true)
else if a[i]<b[i]then exit(false);
exit(true);
end;
begin
fillchar(f,sizeof(f),0);
read(n);
for i:=1 to 4 do
read(a[i]);
a[2]:=a[2]+a[3]+a[4]+a[4]; //a[2]=cost(全选+复制+粘贴*2)
a[3]:=a[4]; //a[3]=cost(粘贴)
fillchar(f,sizeof(f),0);
f[a[1]][1]:=1;
for i:=a[1]+1 to n do
begin
f[i]:=f[i-a[1]];
inc(f[i][1]);
a2:=t1(f[i-a[3]],a1); //粘贴剪切板后的结果
if comp(a2,f[i])then f[i]:=a2;
a2:=t2(f[i-a[2]]); //复制+粘贴剪切板后的结果
if comp(a2,f[i])then begin f[i]:=a2;a1:=f[i-a[2]];end;
end;
j:=h; while f[n][j]=0 do dec(j);
write(f[n][j]);
dec(j);
for i:=j downto 1 do
begin
if f[n][i]<1000 then write(0);
if f[n][i]<100 then write(0);
if f[n][i]<10 then write(0);
write(f[n][i]);
end;
writeln;
close(output);
end.