/***** dijkstra解法 *****/
#include <stdio.h>
#include <string.h>
#define INF 9999999999
long long int L1,L2,L3,C1,C2,C3,A,B,N;
long long int G[200][200];
long long int cost(long long int L)
{
if(L >= 0 && L <= L1)
return C1;
else if(L <= L2)
return C2;
else if(L <= L3)
return C3;
else
return INF;
}
int main()
{
//freopen("Test.txt","r",stdin);
while(scanf("%lld%lld%lld%lld%lld%lld",&L1,&L2,&L3,&C1,&C2,&C3) != EOF)
{
scanf("%lld%lld",&A,&B);
scanf("%lld",&N);
if(A == B)
{
printf("0\n");
continue;
}
long long int a[1000];
a[1] = 0;
int i, j, k;
for(i = 2; i <= N; i++)
scanf("%lld",&a[i]);
for(i = 1; i <= N; i++)
{
for(j = i; j <= N; j++)
{
if(i == j)
G[i][j] = 0;
else
G[i][j] = G[j][i] = cost(a[j] - a[i]);
}
}
/*
for(i = 1; i <= N; i++)
{
for(j = 1; j <= N; j++)
printf("%lld ",G[i][j]);
printf("\n");
}
*/
long long int dist[1000];
int mark[1000];
for(i = 1; i <= N; i++)
{
dist[i] = G[A][i];
mark[i] = 0;
}
mark[A] = 1;
int newP = A;
for(j = 1; j < N; j++)
{
for(i = 1; i <= N; i++)
{
if(G[newP][i] == INF) continue;
if(mark[i] == 1) continue;
if(dist[i] > dist[newP] + G[newP][i])
{
dist[i] = dist[newP] + G[newP][i];
}
}
long long int min = INF;
for(i = 1; i <= N; i++)
{
if(mark[i] == 0 && dist[i] < min)
{
min = dist[i];
newP = i;
}
}
mark[newP] = 1;
//printf("%d\n",newP);
}
printf("%lld\n",dist[B]);
}
return 0;
}
/*** DP解法 ***/
#include <stdio.h>
long long l1,l2,l3,c1,c2,c3,A,B,N,i,j;
long long len1[1000], len[1000], ans[1000];
int main()
{
//freopen("Test.txt","r",stdin);
while(scanf("%lld%lld%lld%lld%lld%lld",&l1,&l2,&l3,&c1,&c2,&c3) != EOF)
{
scanf("%lld%lld%lld",&A,&B,&N);
len1[1] = len[1] = 0;
for(i = 2; i <= N; i++)
{
scanf("%lld",&len1[i]);
len[i] = len1[i] - len1[i-1];
}
if(A > B)
{
long long temp = A;
A = B;
B = temp;
}
ans[A] = 0;
for(i = A+1; i <= B; i++)
{
long long sum = 0, min = ans[i-1] + c3, tmp;
for(j = i-1; j >= A; j--)
{
sum += len[j+1];
if(sum >= 0 && sum <= l1)
tmp = ans[j] + c1;
else if(sum > l1 && sum <= l2)
tmp = ans[j] + c2;
else if(sum > l2 && sum <= l3)
tmp = ans[j] + c3;
else
break;
if(tmp < min)
min = tmp;
}
ans[i] = min;
}
printf("%lld\n",ans[B]);
}
return 0;
}