#include<bits/stdc++.h>
using namespace std;
int n,m,a[1000]={};
int dp[50][50][50][50]={};
int t[100]={};
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=m;i++){
int k=0;
cin>>k;
t[k]++;
}
if(t[1]>0&&n>1); dp[t[1]-1][t[2]][t[3]][t[4]]=a[2];
if(t[2]>0&&n>2); dp[t[1]][t[2]-1][t[3]][t[4]]=a[3];
if(t[3]>0&&n>3); dp[t[1]][t[2]][t[3]-1][t[4]]=a[4];
if(t[4]>0&&n>4); dp[t[1]][t[2]][t[3]][t[4]-1]=a[5];
dp[t[1]][t[2]][t[3]][t[4]]=a[1];
for(int i=1;i<=50;i++){
for(int t4=t[4];t4>=0;t4--){
for(int t3=t[3];t3>=0;t3--){
for(int t2=t[2];t2>=0;t2--){
for(int t1=t[1];t1>=0;t1--){
if(t[1]-t1+(t[2]-t2)*2+(t[3]-t3)*3+(t[4]-t4)*4+1<=n){
if(t1>=0) dp[t1][t2][t3][t4]=max(dp[t1][t2][t3][t4],dp[t1+1][t2][t3][t4]+a[t[1]-t1+(t[2]-t2)*2+(t[3]-t3)*3+(t[4]-t4)*4+1]);
if(t2>=0) dp[t1][t2][t3][t4]=max(dp[t1][t2][t3][t4],dp[t1][t2+1][t3][t4]+a[t[1]-t1+(t[2]-t2)*2+(t[3]-t3)*3+(t[4]-t4)*4+1]);
if(t3>=0) dp[t1][t2][t3][t4]=max(dp[t1][t2][t3][t4],dp[t1][t2][t3+1][t4]+a[t[1]-t1+(t[2]-t2)*2+(t[3]-t3)*3+(t[4]-t4)*4+1]);
if(t4>=0) dp[t1][t2][t3][t4]=max(dp[t1][t2][t3][t4],dp[t1][t2][t3][t4+1]+a[t[1]-t1+(t[2]-t2)*2+(t[3]-t3)*3+(t[4]-t4)*4+1]);
}
}
}
}
}
}
cout<<dp[0][0][0][0];
return 0;
}