#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=a;i<=b;i++)
#define rop(i,a,b) for(int i=a;i<b;i++)
#define per(i,a,b) for(int i=a;i>=b;i--)
#define por(i,a,b) for(int i=a;i>b;i--)
#define endl '\n'
#define pii pair<int,int>
#define fi first
#define se second
typedef long long ll;
typedef unsigned long long ull;
typedef double lf;
typedef long double ld;
using namespace std;
int n,s,t,p,a,b,c,d,tot=1,r[2005],head[2005],dis[2005],flow[2005],pre[2005],anscost;
bool vis[2005];
queue<int>q;
struct edge{
int to,nxt,w,c;
}e[100005];
void add(int u,int v,int w,int c){
e[++tot].to=v;
e[tot].nxt=head[u];
head[u]=tot;
e[tot].w=w;
e[tot].c=c;
}
bool spfa(){
memset(dis,0x3f,sizeof(dis));
memset(vis,0,sizeof(vis));
dis[s]=0;
vis[s]=1;
flow[s]=0x3f3f3f3f;
q.push(s);
while(q.size()){
int u=q.front();
q.pop();
vis[u]=0;
for(int i=head[u];i;i=e[i].nxt){
int to=e[i].to,c=e[i].c;
if(e[i].w&&dis[u]+c<dis[to]){
dis[to]=dis[u]+c;
flow[to]=min(flow[u],e[i].w);
pre[to]=i;
if(!vis[to]){
vis[to]=1;
q.push(to);
}
}
}
}
return dis[t]!=0x3f3f3f3f;
}
void ek(){
while(spfa()){
int x=t;
while(x!=s){
int i=pre[x];
e[i].w-=flow[t];
e[i^1].w+=flow[t];
x=e[i^1].to;
}
anscost+=flow[t]*dis[t];
}
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin>>n;
t=n<<1|1;
rep(i,1,n)
cin>>r[i];
cin>>p>>a>>b>>c>>d;
rop(i,1,n){
add(i,i+1,0x3f3f3f3f,0);
add(i+1,i,0,0);
}
rep(i,1,n){
add(i,t,r[i],0);
add(t,i,0,0);
}
rep(i,1,n){
add(s,i+n,r[i],0);
add(i+n,s,0,0);
}
rep(i,1,n-a){
add(i+n,i+a,0x3f3f3f3f,b);
add(i+a,i+n,0,-b);
}
rep(i,1,n-c){
add(i+n,i+c,0x3f3f3f3f,d);
add(i+c,i+n,0,-d);
}
add(s,1,0x3f3f3f3f,p);
add(1,s,0,-p);
ek();
cout<<anscost;
return 0;
}
/*
?现在jc方式那么低级啊
*/
https://www.luogu.com.cn/record/166266108
不知道错哪了