#include<iostream>
using namespace std;
long long a,n,b,c,d,ans=0;
long long a1,b1,c1,d1;
void exchang(){
if(n==0) return ;
if(n<a1) a1=n;
if(n<c1) c1=n;
return ;
}
void back(long long a2,long long b1,long long c1,long long d1){
long long dans=ans,dn=n;
while(dn>=0&&dans>=ans){
dn+=a2;
dans-=b1;
if(dn<=0) dn-=a2; dans+=b1; break;
dans+=(dn/c1)*d1;
dn%=c1;
}
if(dans<=ans){
ans=dans;
n=dn;
}
}
void working(long long ax,long long bx,long long cx,long long dx){
a1=ax; b1=bx; c1=cx; d1=dx;
ans+=(n/a1)*b1;
n%=a1;
exchang();
if(n!=0&&(n/c1)*d1<=b1)
{
ans+=(n/c1)*d1;
n%=c1;
if(n!=0)
back(c1,d1,a1,b1);
if(n!=0)
ans+=d1; n=0;
}
if(n!=0) ans+=b1; n=0;
}
int main(){
cin>>n>>a>>b>>c>>d;
exchang();
if(n<=a||n<=c)
{
if(b>d)
ans+=d;
else
ans+=b;
cout<<ans;
return 0;
}
if(b*c<d*a){
working(a,b,c,d);
}
else
{
working(c,d,a,b);
}
cout<<ans;
return 0;
}