#include <iostream>
#include <map>
#include <set>
#include <cstdio>
#include <algorithm>
#include <cmath>
#include <string>
#include <climits>
#include <vector>
#include <cstdlib>
#include <sstream>
using namespace std;
#define MOD 1000000007
#define pb push_back
#define mp make_pair
#define F first
#define S second
#define N 50005
#define PII pair<int,int>
pair<int,string>p[N];
struct node
{
int index;
node *left,*right;
node(int i, node* p1, node* p2)
{
index=i;
left=p1;
right=p2;
}
};
void preorder(node * root)
{
if(root)
{
cout<<"(";
preorder(root->left);
cout<<p[root->index].S<<"/"<<p[root->index].F;
preorder(root->right);
cout<<")";
}
}
void build(node *root, int i) //Binary search tree
{
node *temp = new node(i,NULL,NULL);
node *t = root;
while(t)
{
if(p[i].S<p[root->index].S)
{
if(t->left) t = t->left;
else {t->left=temp; return;}
}
else
{
if(t->right) t = t->right;
else {t->right=temp; return;}
}
}
}
int main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
//cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
#ifndef ONLINE_JUDGE
freopen("inp.txt","r",stdin);
freopen("out.txt","w",stdout);
#endif
int n,x,i,j;
cin>>n;
string s;
while(n)
{
for(i=0;i<n;i++)
{
cin>>s;
int l = s.size();
string t=""; j=0; x=0;
while(s[j]!='/') { t+=s[j]; j++;}
j++;
while(j<l) {x = x*10+(s[j]-'0'); j++;}
p[i] = make_pair(x,t);
}
sort(p,p+n);
node *root = new node(n-1,NULL,NULL);
for(i=n-2;i>=0;i--) build(root,i);
preorder(root);
cout<<endl;
cin>>n;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8c2V0PgojaW5jbHVkZSA8Y3N0ZGlvPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8Y21hdGg+CiNpbmNsdWRlIDxzdHJpbmc+CiNpbmNsdWRlIDxjbGltaXRzPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8Y3N0ZGxpYj4KI2luY2x1ZGUgPHNzdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSAgc3RkOwoKI2RlZmluZSBNT0QgMTAwMDAwMDAwNwojZGVmaW5lIHBiIHB1c2hfYmFjawojZGVmaW5lIG1wIG1ha2VfcGFpcgojZGVmaW5lIEYgZmlyc3QKI2RlZmluZSBTIHNlY29uZAojZGVmaW5lIE4gNTAwMDUKI2RlZmluZSBQSUkgcGFpcjxpbnQsaW50PgoKcGFpcjxpbnQsc3RyaW5nPnBbTl07CgpzdHJ1Y3Qgbm9kZQp7CiAgICBpbnQgaW5kZXg7CiAgICBub2RlICpsZWZ0LCpyaWdodDsKICAgIG5vZGUoaW50IGksIG5vZGUqIHAxLCBub2RlKiBwMikKICAgIHsKICAgICAgIGluZGV4PWk7CiAgICAgICBsZWZ0PXAxOwogICAgICAgcmlnaHQ9cDI7CiAgICB9Cn07Cgp2b2lkIHByZW9yZGVyKG5vZGUgKiByb290KQp7CglpZihyb290KSAKCXsKCWNvdXQ8PCIoIjsJCglwcmVvcmRlcihyb290LT5sZWZ0KTsKCWNvdXQ8PHBbcm9vdC0+aW5kZXhdLlM8PCIvIjw8cFtyb290LT5pbmRleF0uRjsKCXByZW9yZGVyKHJvb3QtPnJpZ2h0KTsKCWNvdXQ8PCIpIjsKCX0KCn0KCnZvaWQgYnVpbGQobm9kZSAqcm9vdCwgaW50IGkpIC8vQmluYXJ5IHNlYXJjaCB0cmVlCnsKICAgIG5vZGUgKnRlbXAgPSBuZXcgbm9kZShpLE5VTEwsTlVMTCk7CiAgICBub2RlICp0ID0gcm9vdDsKICAgIHdoaWxlKHQpCiAgICB7CiAgICAgICAgaWYocFtpXS5TPHBbcm9vdC0+aW5kZXhdLlMpIAogICAgICAgIHsKICAgICAgICAgICAgaWYodC0+bGVmdCkgdCA9IHQtPmxlZnQ7CiAgICAgICAgICAgIGVsc2Uge3QtPmxlZnQ9dGVtcDsgcmV0dXJuO30KICAgICAgICB9ICAgIAogICAgICAgIGVsc2UKICAgICAgICB7CiAgICAgICAgICAgIGlmKHQtPnJpZ2h0KSB0ID0gdC0+cmlnaHQ7CiAgICAgICAgICAgIGVsc2Uge3QtPnJpZ2h0PXRlbXA7IHJldHVybjt9CiAgICAgICAgfQogICAgfQogICAgCn0KCmludCBtYWluKCkKewoJaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbygwKTsKCWNpbi50aWUoMCk7CgkvL2Npbi5pZ25vcmUoc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnN0cmVhbXNpemU+OjptYXgoKSwgJ1xuJyk7CgoKCSNpZm5kZWYgT05MSU5FX0pVREdFCglmcmVvcGVuKCJpbnAudHh0IiwiciIsc3RkaW4pOwoJZnJlb3Blbigib3V0LnR4dCIsInciLHN0ZG91dCk7CgkjZW5kaWYKCQoJaW50IG4seCxpLGo7CgljaW4+Pm47CiAgICAKCXN0cmluZyBzOwoJCgl3aGlsZShuKQoJewoJCWZvcihpPTA7aTxuO2krKykKCQl7CgkJCWNpbj4+czsKCQkJaW50IGwgPSBzLnNpemUoKTsKCQkJc3RyaW5nIHQ9IiI7IGo9MDsgeD0wOwoJCQl3aGlsZShzW2pdIT0nLycpIHsgdCs9c1tqXTsgaisrO30KCQkJaisrOwoJCQl3aGlsZShqPGwpIHt4ID0geCoxMCsoc1tqXS0nMCcpOyBqKys7fQoJCQlwW2ldID0gbWFrZV9wYWlyKHgsdCk7CgkJfQoJCXNvcnQocCxwK24pOwoJCQoJCW5vZGUgKnJvb3QgPSBuZXcgbm9kZShuLTEsTlVMTCxOVUxMKTsKCQkKCQlmb3IoaT1uLTI7aT49MDtpLS0pIGJ1aWxkKHJvb3QsaSk7CQoJCQoJCXByZW9yZGVyKHJvb3QpOwkKCQljb3V0PDxlbmRsOwoJCWNpbj4+bjsKCX0KCglyZXR1cm4gMDsKfQ==