import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
static List<Edge2240> list;
static double dis[];
public static void main(String[] args) throws Exception{
BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
int index=1;
while(true){
list=new ArrayList<Edge2240>();
int n=Integer.parseInt(reader.readLine());//语言的个数
if(n==0){
break;
}
dis=new double[n+1];
Map<String,Integer> map=new HashMap<String,Integer>();//存放语言的位置关系
String s;
for (int i = 0; i <n ; i++) {
s=reader.readLine();
map.put(s,(i+1));//
}
int m=Integer.parseInt(reader.readLine());
for (int i = 0; i <m ; i++) {
String[] str=reader.readLine().split(" ");
int from=map.get(str[0]);
double rate=Double.parseDouble(str[1]);
int to=map.get(str[2]);
list.add(new Edge2240(from,to,rate));
}
dis[1]=1;
boolean relax=false;
for (int i = 0; i <n ; i++) {
relax=false;
for (Edge2240 e:list) {
if(dis[e.to] < dis[e.from]*e.rate){
dis[e.to] = dis[e.from]*e.rate;
relax=true;
}
}
/*for (int j = 0; j <list.size(); j++) {
Edge2240 e=list.get(i);
if(dis[e.to] < dis[e.from]*e.rate){
dis[e.to] = dis[e.from]*e.rate;
relax=true;
}
}*/
}
if(relax){//可以松弛
System.out.printf("Case %d: Yes\n",index);
}else{
System.out.printf("Case %d: No\n",index);
}
index++;
reader.readLine();
}
reader.close();
}
}
class Edge2240{
public Edge2240(int from, int to, double rate) {
this.from = from;
this.to = to;
this.rate = rate;
}
int from;
int to;
double rate;
}