#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e4 + 10, M = 110;
int n, m, a[M], b[N], f[N];
int ans = -0x3f3f3f3f3f;
signed main ()
{
cin >> n >> m;
for (int i = 1; i <= m; i ++) cin >> a[i];
for (int i = 0; i < n; i ++) cin >> b[i];
memset (f, -0x3f, sizeof (f)); // 初始化为最小值
f[0] = 0;
for (int i = 0; i < n; i ++)
for (int j = 1; j <= m; j ++)
if ((i - a[j]) >= 0)
f[i] = max (f[i], f[i - a[j]] + b[i - a[j]]); // f[j]改成f[i]
for (int i = 0; i < n; i ++)
for (int j = 1; j <= m; j ++)
if ((i + b[j]) >= n)
{
ans = max (ans, f[i] + b[i]);
break;
}
cout << ans;
return 0;
}