1 #include<iostream>
2 #include<cstdio>
3 #include<cmath>
4 using namespace std;
5 const int MAXN=100001;
6 int a[MAXN];
7 int num[5];
8 int f[50][50][50][50];
9 int main()
10 {
11 int n,m;
12 scanf("%d%d",&n,&m);
13 for(int i=1;i<=n;i++)
14 {
15 scanf("%d",&a[i]);
16 }
17 for(int i=1;i<=m;i++)
18 {
19 int b;
20 scanf("%d",&b);
21 num[b]++;
22 }
23 f[0][0][0][0]=a[1];
24 for(int i=0;i<=num[1];i++)
25 {
26 for(int j=0;j<=num[2];j++)
27 {
28 for(int k=0;k<=num[3];k++)
29 {
30 for(int l=0;l<=num[4];l++)
31 {
32 if(i>=1)
33 {
34 f[i][j][k][l]=max(f[i][j][k][l],f[i-1][j][k][l]+a[i+j*2+k*3+l*4+1]);
35 }
36 if(j>=1)
37 {
38 f[i][j][k][l]=max(f[i][j][k][l],f[i][j-1][k][l]+a[i+j*2+k*3+l*4+1]);
39 }
40 if(k>=1)
41 {
42 f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k-1][l]+a[i+j*2+k*3+l*4+1]);
43 }
44 if(l>=1)
45 {
46 f[i][j][k][l]=max(f[i][j][k][l],f[i][j][k][l-1]+a[i+j*2+k*3+l*4+1]);
47 }
48 }
49 }
50 }
51 }
52 printf("%d",f[num[1]][num[2]][num[3]][num[4]]);
53 return 0;
54 }