#include <cstdio>
#include <algorithm>
using namespace std;

long long fm[100005],ans=0,t,n;
struct node{
    long long ai,bi,ci;
}tn[55];
bool cp(node a,node b){
    return a.ci*b.bi<a.bi*b.ci;
}
int max(int a,int b){return a>b?a:b;}
int main(){
    scanf("%lld%lld",&t,&n);
    for(int i=1;i<=n;i++)scanf("%lld",&tn[i].ai);
    for(int i=1;i<=n;i++)scanf("%lld",&tn[i].bi);
    for(int i=1;i<=n;i++)scanf("%lld",&tn[i].ci);
    sort(tn+1,tn+n+1,cp);
    for(int i=1;i<=n;i++){
        for(int j=t;j-tn[i].ci>=0;j--){
            fm[j]=max(fm[j],fm[j-tn[i].ci]+tn[i].ai-j*tn[i].bi);
            ans=max(ans,fm[j]);
        }
    }
    printf("%lld",ans);
    
    return 0;
}