#include<cstring>
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int w[100],c[100];
int m,n;
int f[100];
memset(f,0,sizeof(f));
cin>>m>>n;
for(int i=0;i<n;i++) cin>>w[i];
for(int i=0;i<n;i++) cin>>c[i];
for(int i=0;i<n;i++)
{
for(int j=w[i];j<=m;j++)
{
f[j]=max(f[j],f[j-w[i]]+c[i]);//完全背包,即每个物品可取无限次,正序枚举确保可取无限次
}
/*for(int j=m;j>=w[i];j--)
{
f[j]=max(f[j],f[j-w[i]]+c[i]);//0-1背包,即每个物品只有一个,倒序枚举确保物品只能取一次
}*/
}
cout<<f[n]<<endl;
}