/*
* File: hdu1217.cpp
* Author: chenjiang
*
* Created on 2010年3月13日, 下午7:56
*/
#include <stdlib.h>
#include <string>
#include <map>
#include <iostream>
using namespace std;
#define Max_E 1000
#define Max_V 50
map<string, int>mapmap;
string str, str1, str2;
int n, m;
double rate;
struct node {
int start, end;
double rate;
} edge[Max_E];
int vertex[Max_V];
double dis[Max_V];
int edge_num;
bool Bellmen_ford(int source, double value)//souce为源点,value为源点的值
{
int i, j;
bool flag;
memset(dis, 0, sizeof (dis));
dis[source] = value;
for (i = 1; i <= n; i++) {
flag = 0;
for (j = 1; j <= edge_num; j++) {
if (dis[edge[j].end]<(dis[edge[j].start] * edge[j].rate)) {
dis[edge[j].end] = dis[edge[j].start] * edge[j].rate;
flag = 1;
}
}
if (!flag)break;
}
if (flag)return true;
return false;
}
/*
*
*/
int main(int argc, char** argv) {
int i, j;
int ca = 0;
while (cin >> n) {
if (n == 0)break;
mapmap.clear();
for (i = 1; i <= n; i++) {
cin >> str;
mapmap[str] = i;
vertex[i] = i;
/*cout<<mapmap[str]<<endl;*/
}
cin >> m;
edge_num = 0;
for (i = 1; i <= m; i++) {
cin >> str1 >> rate >> str2;
edge[++edge_num].start = mapmap[str1];
edge[edge_num].end = mapmap[str2];
edge[edge_num].rate = rate;
}
bool f = 0;
for (i = 1; i <= n; i++) {
if (Bellmen_ford(i, 1)) {
f = 1;
break;
}
}
if (f) {
printf("Case %d: Yes/n", ++ca);
} else printf("Case %d: No/n", ++ca);
}
return (EXIT_SUCCESS);
}