#include<iostream>
#include<vector>
#include<climits>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
vector<int> a(m + 1,0);
vector<int> b(n + 1,0);
for (int j = 1; j <= m; j++) cin >> a[j];
for (int i = 1; i <= n; i++) cin >> b[i];
vector<int> dp(2 * n + 5, INT_MIN);
dp[0] = 1;
for (int j = 1; j <= m; j++) {
if (a[j] == 1 && 1 <= n) {
dp[1] = b[1];
}
}
for (int i = 0; i <= 2 * n; i++) {
for (int j = 0; j <= m; j++) {
if (a[j] <= i && dp[i - a[j]] != INT_MIN && (i - a[j]) >= 0 && (i - a[j]) < n) {
dp[i] = max(dp[i], dp[i - a[j]] + b[i]);
}
}
}
int ans = INT_MIN;
for (int i = n; i <= 2 * n; i++) {
ans = max(ans, dp[i]);
}
cout << ans;
return 0;
}