#include <iostream>
#include <unordered_map>
#include <vector>
#include <sstream>
using namespace std;
unordered_map<string, unordered_map<string, float>> parse_facts(vector<string> &start_unit, vector<float> &multiplier, vector<string> &end_unit){
unordered_map<string, unordered_map<string, float>> h;
int n = multiplier.size();
for(int i=0; i<n; i++){
h[start_unit[i]][end_unit[i]]=multiplier[i];
h[end_unit[i]][start_unit[i]]= 1 / multiplier[i];
}
return h;
}
string resolve_query(float x, string start_unit, string end_unit, unordered_map<string, unordered_map<string, float>>& h){
if(h.find(start_unit)==h.end() || h[start_unit].find(end_unit)==h[start_unit].end())
return "not convertible!";
x *= h[start_unit][end_unit];
stringstream ss;
ss<<x<<' '<<end_unit;
return ss.str();
}
int main() {
int t;
string a, b;
float c;
cin>>t;
vector<string> start_units, end_units;
vector<float> multipliers;
while(t--){
cin>>a>>c>>b;
start_units.push_back(a);
end_units.push_back(b);
multipliers.push_back(c);
}
unordered_map<string, unordered_map<string, float>> h = parse_facts(start_units, multipliers, end_units);
// 1. input the queries
vector<float> inputs;
start_units.clear();
end_units.clear();
cin>>t;
while(t--){
cin>>c>>a>>b;
cout<<resolve_query(c,a,b,h)<<endl;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNzdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp1bm9yZGVyZWRfbWFwPHN0cmluZywgdW5vcmRlcmVkX21hcDxzdHJpbmcsIGZsb2F0Pj4gcGFyc2VfZmFjdHModmVjdG9yPHN0cmluZz4gJnN0YXJ0X3VuaXQsIHZlY3RvcjxmbG9hdD4gJm11bHRpcGxpZXIsIHZlY3RvcjxzdHJpbmc+ICZlbmRfdW5pdCl7Cgl1bm9yZGVyZWRfbWFwPHN0cmluZywgdW5vcmRlcmVkX21hcDxzdHJpbmcsIGZsb2F0Pj4gaDsKCWludCBuID0gbXVsdGlwbGllci5zaXplKCk7Cglmb3IoaW50IGk9MDsgaTxuOyBpKyspewoJCWhbc3RhcnRfdW5pdFtpXV1bZW5kX3VuaXRbaV1dPW11bHRpcGxpZXJbaV07CgkJaFtlbmRfdW5pdFtpXV1bc3RhcnRfdW5pdFtpXV09IDEgLyBtdWx0aXBsaWVyW2ldOwoJfQoJcmV0dXJuIGg7Cn0KCnN0cmluZyByZXNvbHZlX3F1ZXJ5KGZsb2F0IHgsIHN0cmluZyBzdGFydF91bml0LCBzdHJpbmcgZW5kX3VuaXQsIHVub3JkZXJlZF9tYXA8c3RyaW5nLCB1bm9yZGVyZWRfbWFwPHN0cmluZywgZmxvYXQ+PiYgaCl7CglpZihoLmZpbmQoc3RhcnRfdW5pdCk9PWguZW5kKCkgfHwgaFtzdGFydF91bml0XS5maW5kKGVuZF91bml0KT09aFtzdGFydF91bml0XS5lbmQoKSkKCQlyZXR1cm4gIm5vdCBjb252ZXJ0aWJsZSEiOwoJeCAqPSBoW3N0YXJ0X3VuaXRdW2VuZF91bml0XTsKCXN0cmluZ3N0cmVhbSBzczsKCXNzPDx4PDwnICc8PGVuZF91bml0OwoJcmV0dXJuIHNzLnN0cigpOwp9CgppbnQgbWFpbigpIHsKCWludCB0OwoJc3RyaW5nIGEsIGI7CglmbG9hdCBjOwoJY2luPj50OwoJdmVjdG9yPHN0cmluZz4gc3RhcnRfdW5pdHMsIGVuZF91bml0czsKCXZlY3RvcjxmbG9hdD4gbXVsdGlwbGllcnM7Cgl3aGlsZSh0LS0pewoJCWNpbj4+YT4+Yz4+YjsKCQlzdGFydF91bml0cy5wdXNoX2JhY2soYSk7CgkJZW5kX3VuaXRzLnB1c2hfYmFjayhiKTsKCQltdWx0aXBsaWVycy5wdXNoX2JhY2soYyk7Cgl9CgkKCQoJdW5vcmRlcmVkX21hcDxzdHJpbmcsIHVub3JkZXJlZF9tYXA8c3RyaW5nLCBmbG9hdD4+IGggPSBwYXJzZV9mYWN0cyhzdGFydF91bml0cywgbXVsdGlwbGllcnMsIGVuZF91bml0cyk7CgkKCS8vIDEuIGlucHV0IHRoZSBxdWVyaWVzCgl2ZWN0b3I8ZmxvYXQ+IGlucHV0czsKCXN0YXJ0X3VuaXRzLmNsZWFyKCk7CgllbmRfdW5pdHMuY2xlYXIoKTsKCWNpbj4+dDsKCXdoaWxlKHQtLSl7CgkJY2luPj5jPj5hPj5iOwoJCWNvdXQ8PHJlc29sdmVfcXVlcnkoYyxhLGIsaCk8PGVuZGw7Cgl9CgkKCXJldHVybiAwOwp9