1 #include <iostream>
2 #include <cstring>
3 #include <algorithm>
4 #include <cstdio>
5 #include <map>
6 using namespace std;
7 const int MAX = 50;
8 const int INF = 1 << 15;
9 int n;
10 double g[MAX][MAX];
11 map<string,int> m;
12 void Floyd()
13 {
14 for(int k = 1; k <= n; k++)
15 {
16 for(int i = 1; i <= n; i++)
17 {
18 for(int j = 1; j <= n; j++)
19 {
20 if(g[i][k] != 0 && g[k][j] != 0 && g[i][j] < g[i][k]*g[k][j])
21 {
22 g[i][j] = g[i][k]*g[k][j];
23 }
24 }
25 }
26 }
27 }
28 int main()
29 {
30 int num = 0;
31 while(scanf("%d", &n) != EOF && n)
32 {
33 int t;
34 char temp[100],str[100];
35 double rat;
36 m.clear();
37 for(int i = 1; i <= n; i++)
38 {
39 for(int j = 1; j <= n; j++)
40 g[i][j] = 0;
41 }
42 for(int i = 1; i <= n; i++)
43 {
44 scanf("%s", temp);
45 m[temp] = i;
46 }
47 scanf("%d", &t);
48 for(int i = 1; i <= t; i++)
49 {
50 scanf("%s%lf%s",temp,&rat,str);
51 g[ m[temp] ][ m[str] ] = rat;
52 }
53 Floyd();
54 int flag = 0;
55 for(int i = 1; i <= n; i++)
56 {
57 if(g[i][i] != 0 && g[i][i] > 1.0)
58 {
59 flag = 1;
60 break;
61 }
62 }
63 printf("Case %d: ",++num);
64 if(flag)
65 printf("Yes\n");
66 else
67 printf("No\n");
68 }
69 return 0;
70 }