#include <bits/stdc++.h>
using namespace std;
#define INF 1000000000
#define p20 1048576
#define ll long long
ll int n,k,a[100000],l[20];
ll int mx[1000000],mn[1000000],dp[p20];
ll int query_max(int l,int r,int x,int y,int i){
if (l>r||x>r||y<l) return 0;
if (l>=x&&r<=y) return mx[i];
int mid = (l+r)>>1;
int left = 2*i+1;
int right = left+1;
return max(query_max(l,mid,x,y,left),query_max(mid+1,r,x,y,right));
}
ll int query_min(int l,int r,int x,int y,int i){
if (l>r||x>r||y<l) return INF;
if (l>=x&&r<=y) return mn[i];
int mid = (l+r)>>1;
int left = 2*i+1;
int right = left+1;
return min(query_min(l,mid,x,y,left),query_min(mid+1,r,x,y,right));
}
ll int return_val(int l,int r){
if (l>r) return 0;
ll int mxm = query_max(0,n-1,l,r,0);
ll int mnm = query_min(0,n-1,l,r,0);
return mxm-mnm;
}
int buildtree(int l,int r,int i){
if (l>r) return 0;
if (l==r){
mx[i] = mn[i] = a[l];
return 0;
}
int mid = (l+r)>>1;
int left = 2*i+1;
int right = left+1;
buildtree(l,mid,left);
buildtree(mid+1,r,right);
mx[i] = max(mx[left],mx[right]);
mn[i] = min(mn[left],mn[right]);
return 0;
}
int input(){
scanf("%lld",&n);
for (ll int i=0;i<n;i++) scanf("%lld",&a[i]);
scanf("%lld",&k);
for (ll int i=0;i<k;i++) scanf("%lld",&l[i]);
buildtree(0,n-1,0);
return 0;
}
ll int func(ll int mask,ll int x){
if (mask==(1<<n)-1) return 0LL;
if (dp[mask]!=-1){
return dp[mask];
}
ll int m = 0;
for (ll int i=0;i<k;i++){
if (((mask)&(1<<i))==0){
ll int v = return_val(x,x+l[i]-1);
m=max(m,func((mask+(1<<i)),x+l[i])+(v*l[i]));
}
}
dp[mask] = m;
return m;
}
int main(){
input();
memset(dp,-1,sizeof(dp));
printf("%lld\n",func(0,0));
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CiNkZWZpbmUgSU5GIDEwMDAwMDAwMDAKI2RlZmluZSBwMjAgMTA0ODU3NgojZGVmaW5lIGxsIGxvbmcgbG9uZwoKbGwgaW50IG4sayxhWzEwMDAwMF0sbFsyMF07CmxsIGludCBteFsxMDAwMDAwXSxtblsxMDAwMDAwXSxkcFtwMjBdOwoKbGwgaW50IHF1ZXJ5X21heChpbnQgbCxpbnQgcixpbnQgeCxpbnQgeSxpbnQgaSl7CglpZiAobD5yfHx4PnJ8fHk8bCkgcmV0dXJuIDA7CglpZiAobD49eCYmcjw9eSkgcmV0dXJuIG14W2ldOwoJaW50IG1pZCA9IChsK3IpPj4xOwoJaW50IGxlZnQgPSAyKmkrMTsKCWludCByaWdodCA9IGxlZnQrMTsKCXJldHVybiBtYXgocXVlcnlfbWF4KGwsbWlkLHgseSxsZWZ0KSxxdWVyeV9tYXgobWlkKzEscix4LHkscmlnaHQpKTsKfQoKbGwgaW50IHF1ZXJ5X21pbihpbnQgbCxpbnQgcixpbnQgeCxpbnQgeSxpbnQgaSl7CglpZiAobD5yfHx4PnJ8fHk8bCkgcmV0dXJuIElORjsKCWlmIChsPj14JiZyPD15KSByZXR1cm4gbW5baV07CglpbnQgbWlkID0gKGwrcik+PjE7CglpbnQgbGVmdCA9IDIqaSsxOwoJaW50IHJpZ2h0ID0gbGVmdCsxOwoJcmV0dXJuIG1pbihxdWVyeV9taW4obCxtaWQseCx5LGxlZnQpLHF1ZXJ5X21pbihtaWQrMSxyLHgseSxyaWdodCkpOwp9CgpsbCBpbnQgcmV0dXJuX3ZhbChpbnQgbCxpbnQgcil7CglpZiAobD5yKSByZXR1cm4gMDsKCWxsIGludCBteG0gPSBxdWVyeV9tYXgoMCxuLTEsbCxyLDApOwoJbGwgaW50IG1ubSA9IHF1ZXJ5X21pbigwLG4tMSxsLHIsMCk7CglyZXR1cm4gbXhtLW1ubTsKfQoKaW50IGJ1aWxkdHJlZShpbnQgbCxpbnQgcixpbnQgaSl7CglpZiAobD5yKSByZXR1cm4gMDsKCWlmIChsPT1yKXsKCQlteFtpXSA9IG1uW2ldID0gYVtsXTsKCQlyZXR1cm4gMDsKCX0KCWludCBtaWQgPSAobCtyKT4+MTsKCWludCBsZWZ0ID0gMippKzE7CglpbnQgcmlnaHQgPSBsZWZ0KzE7CglidWlsZHRyZWUobCxtaWQsbGVmdCk7CglidWlsZHRyZWUobWlkKzEscixyaWdodCk7CglteFtpXSA9IG1heChteFtsZWZ0XSxteFtyaWdodF0pOwoJbW5baV0gPSBtaW4obW5bbGVmdF0sbW5bcmlnaHRdKTsKCXJldHVybiAwOwp9CgppbnQgaW5wdXQoKXsKCXNjYW5mKCIlbGxkIiwmbik7Cglmb3IgKGxsIGludCBpPTA7aTxuO2krKykgc2NhbmYoIiVsbGQiLCZhW2ldKTsKCXNjYW5mKCIlbGxkIiwmayk7Cglmb3IgKGxsIGludCBpPTA7aTxrO2krKykgc2NhbmYoIiVsbGQiLCZsW2ldKTsKCWJ1aWxkdHJlZSgwLG4tMSwwKTsKCXJldHVybiAwOwp9CgpsbCBpbnQgZnVuYyhsbCBpbnQgbWFzayxsbCBpbnQgeCl7CglpZiAobWFzaz09KDE8PG4pLTEpIHJldHVybiAwTEw7CglpZiAoZHBbbWFza10hPS0xKXsKCQlyZXR1cm4gZHBbbWFza107Cgl9CglsbCBpbnQgbSA9IDA7Cglmb3IgKGxsIGludCBpPTA7aTxrO2krKyl7CgkJaWYgKCgobWFzaykmKDE8PGkpKT09MCl7CgkJCWxsIGludCB2ID0gcmV0dXJuX3ZhbCh4LHgrbFtpXS0xKTsKCQkJbT1tYXgobSxmdW5jKChtYXNrKygxPDxpKSkseCtsW2ldKSsodipsW2ldKSk7CgkJfQoJfQoJZHBbbWFza10gPSBtOwoJcmV0dXJuIG07Cn0KCmludCBtYWluKCl7CglpbnB1dCgpOwoJbWVtc2V0KGRwLC0xLHNpemVvZihkcCkpOwoJcHJpbnRmKCIlbGxkXG4iLGZ1bmMoMCwwKSk7CglyZXR1cm4gMDsKfQo=