#include <iostream>#include <cstdio>#include <string.h>#include <string>#include <map>using namespace std;map <string,int> mp;double way[35][35];double dist[35][35][35];int count;void inint(){ int i,j; for( i=0;i<35;i++ ) for( j=0;j<35;j++ ) way[i][j]=( i==j?1:0 );//初始化稍注意 mp.clear();}void floyd( int n ){ int i,j,k; double temp; for( i=0;i<=n;i++ ) for( j=0;j<=n;j++ ) dist[i][j][0]=way[i][j]; for( k=1;k<=n;k++ ) for( i=1;i<=n;i++ ) for( j=1;j<=n;j++ ) { dist[i][j][k]=dist[i][j][k-1]; temp=dist[i][k][k-1]*dist[k][j][k-1]; if( dist[i][j][k]<temp ) dist[i][j][k]=temp; } for( i=1;i<=n;i++ ) if( dist[i][i][n]>1 ) break; if( i!=n+1 ) cout<<"Case "<<count<<": Yesn"; else cout<<"Case "<<count<<": Non"; count++;}int main(){ int n,m,i,j,k; string a,b; double v; count=1; while( cin>>n && n ) { inint(); for( i=1;i<=n;i++ ) { cin>>a; mp[a]=i; } cin>>m; for( i=1;i<=m;i++ ) { cin>>a>>v>>b; way[ mp[a] ][ mp[b] ]=v; } floyd(n); } return 0;}