# Include <stdio. h >__ int64 map [110] [110] ;__ int64 station [110]; # define Max 0x7fffffffffffff // set a maximum value of _ int64 L1, L2, L3, L4, c1, C2, C3, C4, D; int n, m ;__ int64 Deng (_ int64 d) // calculation fee {If (D = 0) return 0; else if (d <= L1) return C1; else if (d <= l2) return C2; else if (d <= l3) return C3; else if (d <= L4) return C4; else return Max;} void Floyd () {int I, j, k; For (k = 1; k <= N; k ++) for (I = 1; I <= N; I ++) for (j = 1; j <= N; j ++) if (Map [I] [k]! = Max & map [k] [J]! = Max & map [I] [J]> map [I] [k] + map [k] [J]) map [I] [J] = map [I] [k] + map [k] [J];} int main () {int I, j, T, num = 1; scanf ("% d", & T); While (t --) {scanf ("% i64d % i64d % i64d % i64d % i64d % i64d % i64d % i64d", & L1, & L2, & L3, & L4, & C1, & C2, & C3, & C4); scanf ("% d", & N, & M); for (I = 1; I <= N; I ++) scanf ("% i64d", & station [I]); for (I = 1; I <= N; I ++) for (j = I + 1; j <= N; j ++) {d = station [I]-station [J]; If (d <0) d =-D; map [I] [J] = map [J] [I] = Deng (d);} Floyd (); printf ("case % d: \ n", num ++ ); While (M --) {scanf ("% d", & I, & J); If (Map [I] [J]! = Max) printf ("the minimum cost between station % d and station % d is % i64d. \ n ", I, j, map [I] [J]); else printf (" station % d and station % d are not attainable. \ n ", I, j) ;}} return 0 ;}