#include<bits/stdc++.h>
using namespace std;
int n,m,s1,s2,s3,s4;
int a[350];
int f[42][42][42][42];
int h(int i1,int i2,int i3,int i4){
return i1+i2+i2+i3+i3+i3+i4+i4+i4+i4+1;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=m;i++){
int x;
cin>>x;
if(x==1)s1++;
if(x==2)s2++;
if(x==3)s3++;
if(x==4)s4++;
}
for(int i1=0;i1<=s1;i1++){
for(int i2=0;i2<=s2;i2++){
for(int i3=0;i3<=s3;i3++){
for(int i4=0;i4<=s4;i4++){
if(i1<s1){
f[i1+1][i2][i3][i4]=max(f[i1+1][i2][i3][i4],f[i1][i2][i3][i4]+a[h(i1+1,i2,i3,i4)]);
}
if(i2<s2){
f[i1][i2+1][i3][i4]=max(f[i1][i2+1][i3][i4],f[i1][i2][i3][i4]+a[h(i1,i2+1,i3,i4)]);
}
if(i3<s3){
f[i1][i2][i3+1][i4]=max(f[i1][i2][i3+1][i4],f[i1][i2][i3][i4]+a[h(i1,i2,i3+1,i4)]);
}
if(i4<s4){
f[i1][i2][i3][i4+1]=max(f[i1][i2][i3][i4+1],f[i1][i2][i3][i4]+a[h(i1,i2,i3,i4+1)]);
}
}
}
}
}
cout<<f[s1][s2][s3][s4]+a[1]<<"\n";
return 0;
}