1 #include <iostream>
2 #include<string>
3 #include<cstring>
4 #include<vector>
5 #include<set>
6 #include<map>
7 #include<stack>
8 #include<queue>
9 #include<list>
10 #include<cmath>
11 #include<algorithm>
12 #include<cstdio>
13 #include <bitset>
14 #include <climits>
15 #include <time.h>
16 #include<iomanip>
17 #define INF 0x3f3f3f3f
18 using namespace std;
19 #define ll long long
20 #define eps 1e-8
21 #define zero(x) (((x>0)?(x):-(x))<eps)
22 struct point{double x,y;};
23
24 double distancen(point p1,point p2)
25 {
26 return sqrt((p1.x-p2.x)*(p1.x-p2.x)+(p1.y-p2.y)*(p1.y-p2.y));
27 }
28 ll xmult(point p1,point p2,point p0)
29 {
30 return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y);
31
32 }
33 point intersection(point u1,point u2,point v1,point v2)
34 {
35 point ret = u1;
36 double t = ((u1.x-v1.x)*(v1.y-v2.y)-(u1.y-v1.y)*(v1.x-v2.x))
37 /((u1.x-u2.x)*(v1.y-v2.y)-(u1.y-u2.y)*(v1.x-v2.x));
38 ret.x+=(u2.x-u1.x)*t;
39 ret.y+=(u2.y-u1.y)*t;
40 return ret;
41
42 }
43
44 point ptoseg(point p,point l1,point l2)
45 {
46 point t = p;
47 t.x+=l1.y-l2.y;
48 t.y+=l2.x-l1.x;
49
50 if(xmult(l1,t,p)*xmult(l2,t,p)>eps)
51 {
52 return (distancen(p,l1)<distancen(p,l2))?l1:l2;
53 }
54 return intersection(p,t,l1,l2);
55 }
56
57 int dot_online(point p,point l1,point l2)
58 {
59 return (zero(xmult(p,l1,l2))&&(l1.x-p.x)*(l2.x-p.x)==0&&(l1.y-p.y)*(l2.y-p.y)==0);
60 }
61
62 int main()
63 {
64 //freopen("D://in.txt","r",stdin);
65 //freopen("D://out.txt","w",stdout);
66 int T;
67 scanf("%d",&T);
68 while(T--)
69 {
70 bool mark = false;
71 point ll1,ll2;
72 double h,x1,y1,x2,y2;
73 scanf("%lf%lf%lf%lf%lf",&h,&x1,&y1,&x2,&y2);
74 ll1.x = x1;ll1.y = y1;
75 ll2.x = x2;ll2.y = y2;
76 if(x1==x2&&y1==y2)
77 mark = true;
78
79 double x,y,z,X,Y,Z;
80 scanf("%lf%lf%lf%lf%lf%lf",&x,&y,&z,&X,&Y,&Z);
81 int n;
82 scanf("%d",&n);
83 while(n--)
84 {
85 int t;
86 scanf("%d",&t);
87 point newp;
88 newp.x = x+t*X;
89 newp.y = y+t*Y;
90 double zz = z+t*Z;
91 if(mark)
92 {
93 double res = distancen(newp,ll1);
94 double ans = sqrt((h-zz)*(h-zz)+res*res);
95 printf("%.2lf\n",ans);
96 }
97 else if(dot_online(newp,ll1,ll2))
98 {
99 double ans = fabs(h-zz);
100 printf("%