#include<bits/stdc++.h>
using namespace std;
int a[355],r[5];
int f[41][41][41][41];
#define _F f[ga][gb][gc][gd]
int dfs(int ga,int gb,int gc,int gd){
if(ga==gc&&gb==gd&&ga==0){
_F=a[1];
return _F;
}
if(_F!=0)return _F;
int t=ga+gb*2+gc*3+gd*4;
_F=a[t];
if(ga)_F=max(_F,dfs(ga-1,gb,gc,gd));
if(gb)_F=max(_F,dfs(ga,gb-1,gc,gd));
if(gc)_F=max(_F,dfs(ga,gb,gc-1,gd));
if(gd)_F=max(_F,dfs(ga,gb,gc,gd-1));
_F+=a[t+1];
return _F;
}
int main()
{
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++)
scanf("%d",&a[i]);
int s;
for(int i=1;i<=k;i++)
scanf("%d",&s),r[s]++;
printf("%d",dfs(r[1],r[2],r[3],r[4]));
return 0;
}