#include <cstdio> #include <cstring> int n,m; double dis[31][31],rate; char name[31][30],name1[30],name2[30]; int getpos(char *s) { int i; for(i=1;i<=n;i++) { if(strcmp(s,name[i])==0) { return i; } } return 0; } int main() { int i,j,k,casenum = 0; while(scanf("%d",&n),n!=0) { casenum++; memset(dis,0,sizeof(dis)); for(i=1;i<=n;i++) { dis[i][i] = 1.0; scanf("%s",name[i]); } scanf("%d",&m); for(i=1;i<=m;i++) { scanf("%s%lf%s",name1,&rate,name2); dis[getpos(name1)][getpos(name2)] = rate; } bool flag = true; for(k=1;k<=n && flag;k++) { for(i=1;i<=n;i++) { for(j=1;j<=n;j++) { if(dis[i][j] < dis[i][k] * dis[k][j]) dis[i][j] = dis[i][k] * dis[k][j]; } if(dis[i][i] > 1.0) { printf("Case %d: Yes\n",casenum); flag = false; break; } } } if(flag) printf("Case %d: No\n",casenum); } return 0; }