3 import java.util.Scanner;
4
5 public class solution2
6   {
7
8     private static final int MAX_N = 16;
9
10     private void work()
11     {
12
13       Scanner sc = new Scanner(new BufferedReader(new InputStreamReader(
14                                  System.in), 1 << 16));
15       double[] sx = new double[MAX_N];
16       double[] sy = new double[MAX_N];
17       double[] vx = new double[MAX_N];
18       double[] vy = new double[MAX_N];
19       double Hx, Hy, Hv;
20       int n, tc = 1;
21       while (true)
22         {
23           n = sc.nextInt();
24           if (n == 0)
25             break;
26           for (int i = 0; i < n; i++)
27             {
28               sx[i] = sc.nextInt();
29               sy[i] = sc.nextInt();
30               vx[i] = sc.nextInt();
31               vy[i] = sc.nextInt();
32             }
33           Hx = sc.nextInt();
34           Hy = sc.nextInt();
35           Hv = sc.nextInt();
36
37           int[] p = new int[n];
38           for (int i = 0; i < n; i++)
39             {
40               p[i] = i;
41             }
42           double best = Double.POSITIVE_INFINITY;
43           do
44             {
45               double t = 0;
46               double hx = Hx;
47               double hy = Hy;
48               for (int i = 0; i < n; i++)
49                 {
50                   double next = getIntersectionTime(hx, hy, sx[p[i]] + t
51                                                     * vx[p[i]], sy[p[i]] + t * vy[p[i]], vx[p[i]],
52                                                     vy[p[i]], Hv) + 1;
53                   t += next;
54                   hx = sx[p[i]] + t * vx[p[i]];
55                   hy = sy[p[i]] + t * vy[p[i]];
56                 }
57               t += Math.sqrt((hx - Hx) * (hx - Hx) + (hy - Hy) * (hy - Hy))
58                    / Hv;
59               if (t < best)
60                 best = t;
61             }
62           while (nextPerm(p));
63           long time = Math.round(Math.ceil(3600 * best - 1e-9));
64           System.out.printf(
65             "Case %d: %d hour(s) %d minute(s) %d second(s)\n", tc++,
66             time / 3600, (time % 3600) / 60, time % 60);
67         }
68       System.out.close();
69     }
70
71     private double getIntersectionTime(double hx, double hy, double sx,
72                                        double sy, double vx, double vy, double hv)
73     {
74       double dx = hx - sx;
75       double dy = hy - sy;
76       double A = hv * hv - vx * vx - vy * vy;
77       double B = dx * vx + dy * vy;
78       double C = -dx * dx - dy * dy;
79       double D = Math.sqrt(B * B - A * C);
80       double t = -B - D;
81       if (t < -1e-10)
82         t = -B + D;
83       return t / A;
84     }
85
86     private boolean nextPerm(int[] a)
87     {
88       if (a.length <= 1)
89         {
90           return false;
91         }
92       int i = a.length - 1;
93       while (a[i - 1] >= a[i])
94         {
95           i--;
96           if (i == 0)
97             {
98               return false;
99             }
100         }
101       int j = a.length;
102       while (a[j - 1] <= a[i - 1])
103         {
104           j--;
105           if (j == 0)
106             {
107               return false;
108             }
109         }
110       int tmp = a[i - 1];
111       a[i - 1] = a[j - 1];
112       a[j - 1] = tmp;
113       i++;
114       j = a.length;
115       while (i < j)
116         {
117           tmp = a[i - 1];
118           a[i - 1] = a[j - 1];
119           a[j - 1] = tmp;
120           i++;
121           j--;
122         }
123       return true;
124     }
125
126     public static void main(String[] args)
127     {
128       new solution2().work();
129     }
130
131   }
132