#include<iostream>
using namespace std;
int dp[351][41][41][41],c[5],p[351],n,m;
int _max(int i,int j1,int j2,int j3,int j4)
{
int ans=0;
if(j1>=1)ans=dp[i-1][j1-1][j2][j3];
if(j2>=1&&i>=3)ans=max(ans,dp[i-2][j1][j2-1][j3]);
if(j3>=1&&i>=4)ans=max(ans,dp[i-3][j1][j2][j3-1]);
if(j4>=1&&i>=5)ans=max(ans,dp[i-4][j1][j2][j3]);
return ans;
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;++i)
cin>>p[i];
for(int i=1;i<=m;++i)
{
int op;
cin>>op;
c[op]++;
}
int i,j1,j2,j3;
dp[1][0][0][0]=p[1];
for(i=2;i<=n;++i)
for(j1=0;j1<=c[1];++j1)
if(i-1-j1>=0)
for(j2=0;j2<=c[2];++j2)
if(i-1-j1-j2*2>=0)
for(j3=0;j3<=c[3];++j3);
{
int j4=i-1-j1-2*j2-3*j3;
if(j4>=0&&j4<=c[4]*4&&j4%4==0)
dp[i][j1][j2][j3]=_max(i,j1,j2,j3,j4/4)+p[i];
}
cout<<dp[n][c[1]][c[2]][c[3]];
}