#include<bits/stdc++.h>
using namespace std;
int n, m;
int a[154 << 2], b[154], buk[5], f[351][41][41][41][41];
int main(){
ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
cin >> n >> m;
for (int i = 1; i <= n; i++)
cin >> a[i];
for (int j = 1; j <= m; j++){
cin >> b[j];
buk[b[j]]++;
}
memset(f, -1, sizeof f);
f[1][0][0][0][0] = a[1];
for (int i = 2; i <= n; i++)
for (int j = 1; j <= buk[1]; j++)
for (int k = 1; k <= buk[2]; k++)
for (int l = 1; l <= buk[3]; l++)
for (int o = 1; o <= buk[4]; o++){
if (f[i - 1][j - 1][k][l][o] != -1)
f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 1][j - 1][k][l][o] + a[i]);
if (f[i - 2][j][k - 1][l][o] != -1 && i > 2)
f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 2][j][k - 1][l][o] + a[i]);
if (f[i - 3][j][k][l - 1][o] != -1 && i > 3)
f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 4][j][k][l - 1][o] + a[i]);
if (f[i - 4][j][k][l][o - 1] != -1 && i > 4)
f[i][j][k][l][o] = max(f[i][j][k][l][o], f[i - 4][j][k][l][o - 1] + a[i]);
}
cout << f[n][buk[1]][buk[2]][buk[3]][buk[4]];
}