#include<bits/stdc++.h>
using namespace std;
const int C=105,oo=0x3f3f3f3f;
int mp[C][C],cost[C],rt[C][C],u,v;
map<string,int>cities;
string s,su,sv;
string cidx[C];
int c,n,m,q,t;
int main() {
scanf("%d",&t);
for(int tc=1;tc<=t;tc++){
if(tc-1) puts("");
printf("Map #%d\n",tc);
scanf("%d",&n);
for(int i=0;i<n;i++){
cin >> s >> c;
cities[s]=i;
cost[i]=c;
cidx[i]=s;
}
memset(mp,oo,sizeof mp);
scanf("%d",&m);
for(int i=0;i<m;i++){
cin >> su >> sv >> c;
mp[cities[su]][cities[sv]]=2*c;
mp[cities[sv]][cities[su]]=mp[cities[su]][cities[sv]];
}
for(int i=0;i<n;i++) mp[i][i]=0;
memset(rt,-1,sizeof rt);
for(int i=0;i<n;i++){
for(int u=0;u<n;u++){
for(int v=0;v<n;v++)
if(mp[u][v]+cost[u]+cost[v]>mp[u][i]+mp[i][v]+cost[i]+cost[u]+cost[v]){
mp[u][v]=mp[u][i]+mp[i][v];
rt[u][v]=i;
}
}
}
scanf("%d",&q);
for(int i=0;i<q;i++){
printf("Query #%d\n",i+1);
cin >> su >> sv >> c;
u=cities[su];
v=cities[sv];
if(su==sv){
float f=cost[u];
f+=f/10;
f/=c;
f*=100;
round(f);
f/=100;
cout << su << endl;
printf("Each passenger has to pay : %.2f taka\n",f);
continue;
}
cout << su;
float f=mp[u][v]+cost[u]+cost[v];
int j=rt[u][v];
while(j!=-1){
cout << " " << cidx[j];
f+=cost[j];
j=rt[j][v];
}
cout << " " << sv << endl;
f+=f/10;
f/=c;
f*=100;
round(f);
f/=100;
printf("Each passenger has to pay : %.2f taka\n",f);
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKY29uc3QgaW50IEM9MTA1LG9vPTB4M2YzZjNmM2Y7CmludCBtcFtDXVtDXSxjb3N0W0NdLHJ0W0NdW0NdLHUsdjsKbWFwPHN0cmluZyxpbnQ+Y2l0aWVzOwpzdHJpbmcgcyxzdSxzdjsKc3RyaW5nIGNpZHhbQ107CmludCBjLG4sbSxxLHQ7CmludCBtYWluKCkgewogICAgc2NhbmYoIiVkIiwmdCk7CiAgICBmb3IoaW50IHRjPTE7dGM8PXQ7dGMrKyl7CiAgICBpZih0Yy0xKSBwdXRzKCIiKTsKICAgIHByaW50ZigiTWFwICMlZFxuIix0Yyk7CiAgICBzY2FuZigiJWQiLCZuKTsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspewogICAgICAgIGNpbiA+PiBzID4+IGM7CiAgICAgICAgY2l0aWVzW3NdPWk7CiAgICAgICAgY29zdFtpXT1jOwogICAgICAgIGNpZHhbaV09czsKICAgIH0KICAgIG1lbXNldChtcCxvbyxzaXplb2YgbXApOwogICAgc2NhbmYoIiVkIiwmbSk7CiAgICBmb3IoaW50IGk9MDtpPG07aSsrKXsKICAgICAgICBjaW4gPj4gc3UgPj4gc3YgPj4gYzsKICAgICAgICBtcFtjaXRpZXNbc3VdXVtjaXRpZXNbc3ZdXT0yKmM7CiAgICAgICAgbXBbY2l0aWVzW3N2XV1bY2l0aWVzW3N1XV09bXBbY2l0aWVzW3N1XV1bY2l0aWVzW3N2XV07CiAgICB9CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKSBtcFtpXVtpXT0wOwogICAgbWVtc2V0KHJ0LC0xLHNpemVvZiBydCk7CiAgICBmb3IoaW50IGk9MDtpPG47aSsrKXsKICAgICAgICBmb3IoaW50IHU9MDt1PG47dSsrKXsKICAgICAgICAgICAgZm9yKGludCB2PTA7djxuO3YrKykKICAgICAgICAgICAgICAgIGlmKG1wW3VdW3ZdK2Nvc3RbdV0rY29zdFt2XT5tcFt1XVtpXSttcFtpXVt2XStjb3N0W2ldK2Nvc3RbdV0rY29zdFt2XSl7CiAgICAgICAgICAgICAgICAgICAgbXBbdV1bdl09bXBbdV1baV0rbXBbaV1bdl07CiAgICAgICAgICAgICAgICAgICAgcnRbdV1bdl09aTsKICAgICAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBzY2FuZigiJWQiLCZxKTsKICAgIGZvcihpbnQgaT0wO2k8cTtpKyspewogICAgcHJpbnRmKCJRdWVyeSAjJWRcbiIsaSsxKTsKICAgICAgICBjaW4gPj4gc3UgPj4gc3YgPj4gYzsKICAgICAgICB1PWNpdGllc1tzdV07CiAgICAgICAgdj1jaXRpZXNbc3ZdOwogICAgICAgIGlmKHN1PT1zdil7CiAgICAgICAgICAgICAgICBmbG9hdCBmPWNvc3RbdV07CiAgICAgICAgICAgICAgICBmKz1mLzEwOwogICAgICAgICAgICAgICAgZi89YzsKICAgICAgICAgICAgICAgIGYqPTEwMDsKICAgICAgICAgICAgICAgIHJvdW5kKGYpOwogICAgICAgICAgICAgICAgZi89MTAwOwogICAgICAgICAgICAgICAgY291dCA8PCBzdSA8PCBlbmRsOwogICAgICAgICAgICAgICAgcHJpbnRmKCJFYWNoIHBhc3NlbmdlciBoYXMgdG8gcGF5IDogJS4yZiB0YWthXG4iLGYpOwogICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfQogICAgICAgIGNvdXQgPDwgc3U7CiAgICAgICAgZmxvYXQgZj1tcFt1XVt2XStjb3N0W3VdK2Nvc3Rbdl07CiAgICAgICAgaW50IGo9cnRbdV1bdl07CiAgICAgICAgICAgICAgICB3aGlsZShqIT0tMSl7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICIgIiA8PCBjaWR4W2pdOwogICAgICAgICAgICAgICAgZis9Y29zdFtqXTsKICAgICAgICAgICAgICAgIGo9cnRbal1bdl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgY291dCA8PCAiICIgPDwgc3YgPDwgZW5kbDsKICAgICAgICBmKz1mLzEwOwogICAgICAgIGYvPWM7CiAgICAgICAgZio9MTAwOwogICAgICAgIHJvdW5kKGYpOwogICAgICAgIGYvPTEwMDsKICAgICAgICBwcmludGYoIkVhY2ggcGFzc2VuZ2VyIGhhcyB0byBwYXkgOiAlLjJmIHRha2FcbiIsZik7CiAgICB9CiAgfQoKICAgIHJldHVybiAwOwp9Cg==