#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
void Code_By_Mohamed_Khaled() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
// #ifndef ONLINE_JUDGE
// freopen("input.txt", "r", stdin);
// freopen("output.txt", "w", stdout);
// #endif
}
const ll mod=1e9+7;
ll add(ll a, ll b) { return ((a % mod) + (b % mod)) % mod; }
ll mul(ll a, ll b) { return ((a % mod) * (b % mod)) % mod; }
ll sub(ll a, ll b) { return ((a % mod) - (b % mod) + mod) % mod; }
// double a;string s;ll N;map<string,vector<ll>>m_base,m_quote;
// vector<map<string,double>>dp;vector<string>base,quote;vector<double>p;
// double sol(ll idx,string &cur) {
// if (idx==N) {
// return (cur==s ? 1.0:0.0);
// }
// auto it=dp[idx].find(cur);
// if (it!=dp[idx].end()) return it->second;
// double best=(cur==s ? 1.0:0.0);
// auto vec=lower_bound(m_base[cur].begin(),m_base[cur].end(), idx);
// while (vec!=m_base[cur].end()) {
// int j=*vec;
// double val=p[j]*sol(j+1,quote[j]);
// best=max(best,val);
// ++vec;
// }
// auto index=lower_bound(m_quote[cur].begin(),m_quote[cur].end(), idx);
// while (index!=m_quote[cur].end()) {
// int j=*index;
// double val=(1.0/p[j])*sol(j+1,base[j]);
// best=max(best,val);
// ++index;
// }
// return dp[idx][cur]=best;
// }
int main() {
Code_By_Mohamed_Khaled();
// freopen("crypto.in", "r", stdin);
ll t;cin>>t;
while (t--) {
ll a,N;string s;cin>>a>>s>>N;
map<string,double>dp;
dp[s]=a;
for (ll i=0;i<N;i++) {
string b,q;double p;cin>>b>>q>>p;
double bb=0,qq=0;
if (dp.find(b)!=dp.end())bb=dp[b];
if (dp.find(q)!=dp.end())qq=dp[q];
if (bb>0) {
dp[q]=max(dp[q],bb*p);
}
if (qq>0)dp[b]=max(dp[b],qq/p);
}
cout<<fixed<<setprecision(6)<<dp[s]<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnR5cGVkZWYgbG9uZyBsb25nIGxsOwp1c2luZyBuYW1lc3BhY2Ugc3RkOwp2b2lkIENvZGVfQnlfTW9oYW1lZF9LaGFsZWQoKSB7CiAgICBpb3NfYmFzZTo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CiAgICBjb3V0LnRpZShudWxscHRyKTsKLy8gI2lmbmRlZiBPTkxJTkVfSlVER0UKLy8gICAgIGZyZW9wZW4oImlucHV0LnR4dCIsICJyIiwgc3RkaW4pOwovLyAgICAgZnJlb3Blbigib3V0cHV0LnR4dCIsICJ3Iiwgc3Rkb3V0KTsKLy8gI2VuZGlmCn0KY29uc3QgbGwgbW9kPTFlOSs3OwpsbCBhZGQobGwgYSwgbGwgYikgeyByZXR1cm4gKChhICUgbW9kKSArIChiICUgbW9kKSkgJSBtb2Q7IH0KbGwgbXVsKGxsIGEsIGxsIGIpIHsgcmV0dXJuICgoYSAlIG1vZCkgKiAoYiAlIG1vZCkpICUgbW9kOyB9CmxsIHN1YihsbCBhLCBsbCBiKSB7IHJldHVybiAoKGEgJSBtb2QpIC0gKGIgJSBtb2QpICsgbW9kKSAlIG1vZDsgfQovLyBkb3VibGUgYTtzdHJpbmcgcztsbCBOO21hcDxzdHJpbmcsdmVjdG9yPGxsPj5tX2Jhc2UsbV9xdW90ZTsKLy8gdmVjdG9yPG1hcDxzdHJpbmcsZG91YmxlPj5kcDt2ZWN0b3I8c3RyaW5nPmJhc2UscXVvdGU7dmVjdG9yPGRvdWJsZT5wOwovLyBkb3VibGUgc29sKGxsIGlkeCxzdHJpbmcgJmN1cikgewovLyAgICAgaWYgKGlkeD09TikgewovLyAgICAgICAgIHJldHVybiAoY3VyPT1zID8gMS4wOjAuMCk7Ci8vICAgICB9Ci8vICAgICBhdXRvIGl0PWRwW2lkeF0uZmluZChjdXIpOwovLyAgICAgaWYgKGl0IT1kcFtpZHhdLmVuZCgpKSByZXR1cm4gaXQtPnNlY29uZDsKLy8gICAgIGRvdWJsZSBiZXN0PShjdXI9PXMgPyAxLjA6MC4wKTsKLy8gICAgIGF1dG8gdmVjPWxvd2VyX2JvdW5kKG1fYmFzZVtjdXJdLmJlZ2luKCksbV9iYXNlW2N1cl0uZW5kKCksIGlkeCk7Ci8vICAgICB3aGlsZSAodmVjIT1tX2Jhc2VbY3VyXS5lbmQoKSkgewovLyAgICAgICAgIGludCBqPSp2ZWM7Ci8vICAgICAgICAgZG91YmxlIHZhbD1wW2pdKnNvbChqKzEscXVvdGVbal0pOwovLyAgICAgICAgIGJlc3Q9bWF4KGJlc3QsdmFsKTsKLy8gICAgICAgICArK3ZlYzsKLy8gICAgIH0KLy8gICAgIGF1dG8gaW5kZXg9bG93ZXJfYm91bmQobV9xdW90ZVtjdXJdLmJlZ2luKCksbV9xdW90ZVtjdXJdLmVuZCgpLCBpZHgpOwovLyAgICAgd2hpbGUgKGluZGV4IT1tX3F1b3RlW2N1cl0uZW5kKCkpIHsKLy8gICAgICAgICBpbnQgaj0qaW5kZXg7Ci8vICAgICAgICAgZG91YmxlIHZhbD0oMS4wL3Bbal0pKnNvbChqKzEsYmFzZVtqXSk7Ci8vICAgICAgICAgYmVzdD1tYXgoYmVzdCx2YWwpOwovLyAgICAgICAgICsraW5kZXg7Ci8vICAgICB9Ci8vICAgICByZXR1cm4gZHBbaWR4XVtjdXJdPWJlc3Q7Ci8vIH0KaW50IG1haW4oKSB7CiAgICBDb2RlX0J5X01vaGFtZWRfS2hhbGVkKCk7CiAgICAvLyBmcmVvcGVuKCJjcnlwdG8uaW4iLCAiciIsIHN0ZGluKTsKICAgIGxsIHQ7Y2luPj50OwogICAgd2hpbGUgKHQtLSkgewogICAgICAgIGxsIGEsTjtzdHJpbmcgcztjaW4+PmE+PnM+Pk47CiAgICAgICAgbWFwPHN0cmluZyxkb3VibGU+ZHA7CiAgICAgICAgZHBbc109YTsKICAgICAgICBmb3IgKGxsIGk9MDtpPE47aSsrKSB7CiAgICAgICAgICAgIHN0cmluZyBiLHE7ZG91YmxlIHA7Y2luPj5iPj5xPj5wOwogICAgICAgICAgICBkb3VibGUgYmI9MCxxcT0wOwogICAgICAgICAgICBpZiAoZHAuZmluZChiKSE9ZHAuZW5kKCkpYmI9ZHBbYl07CiAgICAgICAgICAgIGlmIChkcC5maW5kKHEpIT1kcC5lbmQoKSlxcT1kcFtxXTsKICAgICAgICAgICAgaWYgKGJiPjApIHsKICAgICAgICAgICAgICAgIGRwW3FdPW1heChkcFtxXSxiYipwKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAocXE+MClkcFtiXT1tYXgoZHBbYl0scXEvcCk7CiAgICAgICAgfQogICAgICAgIGNvdXQ8PGZpeGVkPDxzZXRwcmVjaXNpb24oNik8PGRwW3NdPDwiXG4iOwogICAgfQogICAgcmV0dXJuIDA7Cn0=