#include <iostream>
#include <stdio.h>
#include <string.h>
#include<string>
#include <map>
#define INF 100000000
#define maxn 50
using namespace std;
double sta[500][500];
map<string,int> ma;
int main()
{
int n,m,max;
double p;
int time = 0;
string a,b;
while(scanf("%d",&n) ,n)
{
ma.clear();
time++;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
if(i == j)
sta[i][j] = 1;
else
sta[i][j] = -INF;
}
}
for( int i = 1; i<=n; i++)
{
cin>>a;
ma[a] = i;
}
scanf("%d",&m);
{
for( int j = 1; j<=m; j++)
{
cin>>a>>p>>b;
sta[ma[a]][ma[b]] = p;
}
}
bool falg = false;
for( int k = 1; k <= n; k++)
for( int i = 1; i <= n; i++)
for( int j = 1; j <=n; j++)
if(sta[i][j] < sta[i][k] * sta[k][j])
{
sta[i][j] = sta[i][k] * sta[k][j];
cout<<sta[i][j]<<endl;
}
for( int i = 1; i<= n; i++)
{
if(sta[i][i]>1)
{
falg = true;
break;
}
}
cout<<"Case "<<time<<": ";
if(falg)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}
#include <stdio.h>
#include <string.h>
#include<string>
#include <map>
#define INF 100000000
#define maxn 50
using namespace std;
double sta[500][500];
map<string,int> ma;
int main()
{
int n,m,max;
double p;
int time = 0;
string a,b;
while(scanf("%d",&n) ,n)
{
ma.clear();
time++;
for(int i = 1; i <= n; i++)
{
for(int j = 1; j <= n; j++)
{
if(i == j)
sta[i][j] = 1;
else
sta[i][j] = -INF;
}
}
for( int i = 1; i<=n; i++)
{
cin>>a;
ma[a] = i;
}
scanf("%d",&m);
{
for( int j = 1; j<=m; j++)
{
cin>>a>>p>>b;
sta[ma[a]][ma[b]] = p;
}
}
bool falg = false;
for( int k = 1; k <= n; k++)
for( int i = 1; i <= n; i++)
for( int j = 1; j <=n; j++)
if(sta[i][j] < sta[i][k] * sta[k][j])
{
sta[i][j] = sta[i][k] * sta[k][j];
cout<<sta[i][j]<<endl;
}
for( int i = 1; i<= n; i++)
{
if(sta[i][i]>1)
{
falg = true;
break;
}
}
cout<<"Case "<<time<<": ";
if(falg)
cout<<"Yes"<<endl;
else
cout<<"No"<<endl;
}
}