#include <iostream>
#include<vector>
using namespace std;
int caculatecost(int distance, int L1, int L2, int L3, int C1, int C2, int C3) {
if (distance <= L1)return C1;
if (distance <= L2)return C2;
if (distance <= L3)return C3;
return 1000000000;
}
int main() {
int L1, L2, L3, C1, C2, C3, A, B, N;
while (cin >> L1 >> L2 >> L3 >> C1 >> C2 >> C3 >> A >> B >>
N) { // 注意 while 处理多个 case
int tmp;
vector<int>v1;
for (int i = 0; i < N - 1; i++) {
cin >> tmp;
v1.push_back(tmp);
}
vector<int>dp(N+1, 1000000000);
dp[A]=0;
for(int i=A;i<B;i++){
for(int j=i+1;j<=B;j++){
//注意这里的v1存储的是从第一个站到其他各站点的距离,所以要用j-2和i-2
int distance=v1[j-2]-v1[ i-2];
int cost=caculatecost(distance, L1, L2, L3, C1, C2, C3);
dp[j]=min(dp[j],dp[i]+cost);
}
}
cout<<dp[B]<<endl;
}
}
// 64 位输出请用 printf("%lld")