#include<iostream>
using namespace std;
int f[41][41][41][41],a[400],num[5];
int main()
{
int n,m,x;
cin>>n>>m;
for (int i=1;i<=n;i++) cin>>a[i];
for (int i=1;i<=m;i++) {cin>>x;num[x]++;}
f[0][0][0][0]=a[1];
for (int x1=0;x1<=num[1];x1++)
for (int x2=0;x2<=num[2];x2++)
for (int x3=0;x3<=num[3];x3++)
for (int x4=0;x4<=num[4];x4++)
{
int b;
b=1+x1+2*x2+3*x3+4*x4;
if (x1>0) f[x1][x2][x3][x4]=max(f[x1][x2][x3][x4],f[x1-1][x2][x3][x4]+a[b]);
if (x2>0) f[x1][x2][x3][x4]=max(f[x1][x2][x3][x4],f[x1][x2-1][x3][x4]+a[b]);
if (x3>0) f[x1][x2][x3][x4]=max(f[x1][x2][x3][x4],f[x1][x2][x3-1][x4]+a[b]);
if (x4>0) f[x1][x2][x3][x4]=max(f[x1][x2][x3][x4],f[x1][x2][x3][x4-1]+a[b]);
}
cout<<f[num[1]][num[2]][num[3]][num[4]]<<endl;
return 0;
}
/**************************************************************
Problem: 2297
User: admin
Language: C++
Result: Accepted
Time:114 ms
Memory:13112 kb
****************************************************************/