#include<bits/stdc++.h>
using namespace std;
const int N=40;
int f[N][N][N][N];
int a[360];
int x[5];
int num(int i,int j,int k,int z){
return i*1+j*2+k*3+z*4;
}
int main(){
int n,m;scanf("%d%d",&n,&m);
for(int i=0;i<n;i++) scanf("%d",&a[i]);
for(int i=0;i<m;i++){
int k;scanf("%d",&k);
x[k]++;
}
f[0][0][0][0]=a[0];;
for(int i=0;i<=x[1];i++){
for(int j=0;j<=x[2];j++){
for(int k=0;k<=x[3];k++){
for(int z=0;z<=x[4];z++){
if(i) f[i][j][k][z]=max(f[i][j][k][z],f[i-1][j][k][z]+a[num(i,j,k,z)]);
if(j) f[i][j][k][z]=max(f[i][j][k][z],f[i][j-1][k][z]+a[num(i,j,k,z)]);
if(k) f[i][j][k][z]=max(f[i][j][k][z],f[i][j][k-1][z]+a[num(i,j,k,z)]);
if(z) f[i][j][k][z]=max(f[i][j][k][z],f[i][j][k][z-1]+a[num(i,j,k,z)]);
}
}
}
}
printf("%d\n",f[x[1]][x[2]][x[3]][x[4]]);
return 0;
}