#include<iostream>
#include<algorithm>
#include<cstring>
#define ll long long
#define endl '\n'
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>(b);i--)
#define N 355
#define M 45
using namespace std;
int n,m,x;
int a[N],b[5],dp[M][M][M][M];
int main(){
cin>>n>>m;
memset(dp,0,sizeof dp);
rep(i,1,n) cin>>a[i];
rep(i,1,m){
cin>>x;
b[x]++;
}
dp[0][0][0][0]=a[1];
rep(x1,0,b[1]){
rep(x2,0,b[2]){
rep(x3,0,b[3]){
rep(x4,0,b[4]){
int tmp= dp[x1][x2][x3][x4];
int add= a[x1*1+x2*2+x3*3+x4*4];
if(x1!=0) tmp=max(tmp,dp[x1-1][x2][x3][x4]+add);
if(x2!=0) tmp=max(tmp,dp[x1][x2-1][x3][x4]+add);
if(x3!=0) tmp=max(tmp,dp[x1][x2][x3-1][x4]+add);
if(x4!=0) tmp=max(tmp,dp[x1][x2][x3][x4-1]+add);
dp[x1][x2][x3][x4]=tmp;
}
}
}
}
cout<<dp[b[1]][b[2]][b[3]][b[4]];
return 0;
}