#include<bits/stdc++.h>
using namespace std;
const int maxn=355;
int n,m,a[maxn],ka=0,kb=0,kc=0,kd=0,f[50][50][50][50];
int main(){
cin>>n>>m;
memset(f,0,sizeof(f));
for(int i=1;i<=n;i++){
cin>>a[i];
}
int x;
for(int i=1;i<=m;i++){
cin>>x;
if(x==1){
ka+=1;
}
if(x==2){
kb+=1;
}
if(x==3){
kc+=1;
}
if(x==4){
kd+=1;
}
}
int ls=0;
for(int i=0;i<=ka;i++){
for(int j=0;j<=kb;j++){
for(int k=0;k<=kc;k++){
for(int v=0;v<=kd;v++){
ls=i*1+j*2+k*3+v*4+1;
if(i>=1){
f[i][j][k][v]=max(f[i][j][k][v],f[i-1][j][k][v]+a[ls]);
}
if(j>=1){
f[i][j][k][v]=max(f[i][j][k][v],f[i][j-1][k][v]+a[ls]);
}
if(k>=1){
f[i][j][k][v]=max(f[i][j][k][v],f[i][j][k-1][v]+a[ls]);
}
if(v>=1){
f[i][j][k][v]=max(f[i][j][k][v],f[i][j][k][v-1]+a[ls]);
}
}
}
}
}
cout<<f[ka][kb][kc][kd];
}