#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
****************************************************************/