#include<bits/stdc++.h>
#define int long long
using namespace std;
int a[1010],b[10010];
struct N{
int n,s;
};
signed main(){
memset(b,0,sizeof(b));
int n,m,s=-1e9;
cin>>n>>m;
for(int i=1;i<=m;i++) cin>>a[i];
for(int i=1;i<=n;i++) cin>>b[i];
queue<N> q;
q.push({1,b[1]});
while(!q.empty()){
N c=q.front();
q.pop();
if(c.n>=n){
s=max(s,c.s);
continue;
}
for(int i=1;i<=m;i++){
q.push({c.n+a[i],c.s+b[c.n+a[i]]});
}
}
cout<<s;
}