#include<bits/stdc++.h>
using namespace std;
const int maxn=1e7;
int dp[maxn],a[maxn],b[maxn],n,m;
bool vis[maxn];
int main(){
int ans=-2e9;
cin >> n >> m;
for(int i=0;i<m;i++){
cin >> a[i];
}
for(int i=0;i<n;i++){
cin >> b[i];
dp[i]=INT_MIN;
vis[i]=false;
}
vis[0]=true;
dp[0]=b[0];
for(int i=0;i<n;i++){
if(!vis[i]) continue;
for(int j=0;j<m;j++){
dp[i+a[j]]=max(dp[i+a[j]],b[i+a[j]]+dp[i]);
vis[i+a[j]]=true;
}
}
for(int i=n;i<=2*n;i++) ans=max(ans,dp[i]);
cout << ans;
return 0;
}