#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
struct node {
ll a, b, c;
}m[100005];
ll dp[100005];
ll t, ans, n;
bool cmp (node a, node b){
return a.c*b.b<b.c*a.b;
}
int main() {
cin>>t>>n;
for (ll i=1; i<=n; i++) cin>>m[i].a;
for (ll i=1; i<=n; i++) cin>>m[i].b;
for (ll i=1; i<=n; i++) cin>>m[i].c;
sort (m+1, m+1+n, cmp);
for (ll i=1; i<=n; i++){
for (ll j=t; j-m[i].c>=0; j--){
dp[j]=max (dp[j], dp[j-m[i].c]+m[i].a-j*m[i].b);
}
}
sort (dp+1, dp+1+n);
cout<<dp[n];
return 0;
}