#include<iostream>
#include <climits>
using namespace std;
int n,m,x,dp[355];
int a[355],c[6];
bool check(int a,int b,int c,int d){
return (a<0&&b<0&&c<0&&d<0);
}
int dfs(int id,int z1,int z2,int z3,int z4){
if(id<=0||check(z1,z2,z3,z4))return 0;
if(dp[id])return dp[id];
int s1=dfs(id-1,z1-1,z2,z3,z4);
int s2=dfs(id-2,z1,z2-1,z3,z4);
int s3=dfs(id-3,z1,z2,z3-1,z4);
int s4=dfs(id-4,z1,z2,z3,z4-1);
dp[id]=max(max(s1,s2),max(s3,s4))+a[id];
return dp[id];
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=1;i<=m;i++){
cin>>x;
c[x]++;
}dp[1]=a[1];
dfs(n,c[1],c[2],c[3],c[4]);
cout<<dp[n];
return 0;
}
0分