#include<iostream>#include<cstdio>#include<cstring>using namespace std;const long long INF = 1e18;const int VN = 105;int n;int m;long long d[VN][VN];long long X[VN];long long L1,L2,L3,L4;long long C1,C2,C3,C4;inline long long abs(long long x){return x<0?-x:x;}void init(){for(int i=1; i<=n; ++i){d[i][i] = 0;for(int j=i+1; j<=n; ++j)d[i][j]=d[j][i]=INF;}}long long getCost(long long dist){if(0<dist && dist<=L1) return C1;if(L1<dist && dist<=L2) return C2;if(L2<dist && dist<=L3) return C3;if(L3<dist && dist<=L4) return C4;return INF;}void Floyd(){for(int k=1; k<=n; ++k)for(int i=1; i<=n; ++i)if(d[i][k]!=INF)for(int j=1; j<=n; ++j)if(d[k][j]!=INF)d[i][j]=min(d[i][j], d[i][k]+d[k][j]);}int main(){int T,cas=1;scanf("%d",&T);while(T--){cin >> L1 >> L2 >> L3 >> L4;cin >> C1 >> C2 >> C3 >> C4;scanf("%d%d",&n,&m);for(int i=1; i<=n; ++i)cin >> X[i];init();for(int i=1; i<=n; ++i){for(int j=i+1; j<=n; ++j){d[i][j]=d[j][i]=getCost(abs(X[i]-X[j]));}}Floyd();int u,v;printf("Case %d:\n",cas++);for(int i=0; i<m; ++i){scanf("%d%d",&u,&v);if(d[u][v]!=INF){printf("The minimum cost between station %d and station %d is ",u,v);cout << d[u][v] << ".\n";}else printf("Station %d and station %d are not attainable.\n",u,v);}}return 0;}