#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
struct node{
string s;
int val;
};
struct node2{
node x;
node2 *left, *right;
node2(node &t) : x(t), left(NULL), right(NULL){}
};
struct seg_tree{
pair<int, int> seg[200001];
void build(int l, int r, int i);
int query(int l, int r, int i, int x, int y);
};
node arr[50001];
void seg_tree :: build(int l, int r, int i){
if(l == r){
seg[i].first = arr[l].val;
seg[i].second = l;
return;
}
int mid = (l+r)/2;
build(l, mid, i*2+1);
build(mid+1, r, i*2+2);
if(seg[i*2+1].first > seg[i*2+2].first) seg[i] = seg[i*2+1];
else seg[i] = seg[i*2+2];
}
int seg_tree :: query(int l, int r, int i, int x, int y){
if(r < x || l > y) return -1;
if(l >= x && r <= y) return seg[i].second;
int mid = (l+r)/2;
int left = query(l, mid, i*2+1, x, y);
int right = query(mid+1, r, i*2+2, x, y);
if(left == right) return left;
else if(left == -1) return right;
else if(right == -1) return left;
if(arr[left].val > arr[right].val) return left;
else return right;
}
int n;
seg_tree *s;
bool cmp1(node& a, node& b){
return a.s < b.s;
}
bool cmp2(int& a, int& b){
return a > b;
}
node2* build(int l, int r){
if(l > r) return NULL;
if(l == r){
node2* temp = new node2(arr[l]);
return temp;
}
int pos = s -> query(0, n-1, 0, l, r);
node2* curr = new node2(arr[pos]);
curr->left = build(l, pos-1);
curr->right = build(pos+1, r);
return curr;
}
void inorder(node2* root){
if(!root) return;
cout << "(";
inorder(root->left);
cout << root->x.s << "/" << root->x.val;
inorder(root->right);
cout << ")";
}
int main(){
cin >> n;
while(n != 0){
s = new seg_tree;
for(int k = 0; k < n; k++){
string s, curr = "";
cin >> s;
int t = s.length(), j = 0, data = 0;
while(s[j] != '/')
curr += s[j++];
j++;
while(j < t){
data = data*10 + s[j] - '0';
j++;
}
arr[k].s = curr;
arr[k].val = data;
}
sort(arr, arr+n, cmp1);
s->build(0, n-1, 0);
node2* ans = build(0, n-1);
inorder(ans);
cout << endl;
cin >> n;
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBub2RlewogICAgc3RyaW5nIHM7CiAgICBpbnQgdmFsOwp9OwoKc3RydWN0IG5vZGUyewogICAgbm9kZSB4OwogICAgbm9kZTIgKmxlZnQsICpyaWdodDsKCiAgICBub2RlMihub2RlICZ0KSA6IHgodCksIGxlZnQoTlVMTCksIHJpZ2h0KE5VTEwpe30KfTsKCnN0cnVjdCBzZWdfdHJlZXsKICAgIHBhaXI8aW50LCBpbnQ+IHNlZ1syMDAwMDFdOwoKICAgIHZvaWQgYnVpbGQoaW50IGwsIGludCByLCBpbnQgaSk7CiAgICBpbnQgcXVlcnkoaW50IGwsIGludCByLCBpbnQgaSwgaW50IHgsIGludCB5KTsKfTsKCm5vZGUgYXJyWzUwMDAxXTsKCnZvaWQgc2VnX3RyZWUgOjogYnVpbGQoaW50IGwsIGludCByLCBpbnQgaSl7CiAgICBpZihsID09IHIpewogICAgICAgIHNlZ1tpXS5maXJzdCA9IGFycltsXS52YWw7CiAgICAgICAgc2VnW2ldLnNlY29uZCA9IGw7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICBidWlsZChsLCBtaWQsIGkqMisxKTsKICAgIGJ1aWxkKG1pZCsxLCByLCBpKjIrMik7CgogICAgaWYoc2VnW2kqMisxXS5maXJzdCA+IHNlZ1tpKjIrMl0uZmlyc3QpIHNlZ1tpXSA9IHNlZ1tpKjIrMV07CiAgICBlbHNlIHNlZ1tpXSA9IHNlZ1tpKjIrMl07Cn0KCmludCBzZWdfdHJlZSA6OiBxdWVyeShpbnQgbCwgaW50IHIsIGludCBpLCBpbnQgeCwgaW50IHkpewogICAgaWYociA8IHggfHwgbCA+IHkpIHJldHVybiAtMTsKICAgIGlmKGwgPj0geCAmJiByIDw9IHkpIHJldHVybiBzZWdbaV0uc2Vjb25kOwogICAgaW50IG1pZCA9IChsK3IpLzI7CiAgICBpbnQgbGVmdCA9IHF1ZXJ5KGwsIG1pZCwgaSoyKzEsIHgsIHkpOwogICAgaW50IHJpZ2h0ID0gcXVlcnkobWlkKzEsIHIsIGkqMisyLCB4LCB5KTsKCiAgICBpZihsZWZ0ID09IHJpZ2h0KSByZXR1cm4gbGVmdDsKICAgIGVsc2UgaWYobGVmdCA9PSAtMSkgcmV0dXJuIHJpZ2h0OwogICAgZWxzZSBpZihyaWdodCA9PSAtMSkgcmV0dXJuIGxlZnQ7CgogICAgaWYoYXJyW2xlZnRdLnZhbCA+IGFycltyaWdodF0udmFsKSByZXR1cm4gbGVmdDsKICAgIGVsc2UgcmV0dXJuIHJpZ2h0Owp9CgppbnQgbjsKCnNlZ190cmVlICpzOwoKYm9vbCBjbXAxKG5vZGUmIGEsIG5vZGUmIGIpewogICAgcmV0dXJuIGEucyA8IGIuczsKfQoKYm9vbCBjbXAyKGludCYgYSwgaW50JiBiKXsKICAgIHJldHVybiBhID4gYjsKfQoKbm9kZTIqIGJ1aWxkKGludCBsLCBpbnQgcil7CiAgICBpZihsID4gcikgcmV0dXJuIE5VTEw7CiAgICBpZihsID09IHIpewogICAgICAgIG5vZGUyKiB0ZW1wID0gbmV3IG5vZGUyKGFycltsXSk7CiAgICAgICAgcmV0dXJuIHRlbXA7CiAgICB9CiAgICBpbnQgcG9zID0gcyAtPiBxdWVyeSgwLCBuLTEsIDAsIGwsIHIpOwogICAgbm9kZTIqIGN1cnIgPSBuZXcgbm9kZTIoYXJyW3Bvc10pOwogICAgY3Vyci0+bGVmdCA9IGJ1aWxkKGwsIHBvcy0xKTsKICAgIGN1cnItPnJpZ2h0ID0gYnVpbGQocG9zKzEsIHIpOwogICAgcmV0dXJuIGN1cnI7Cn0KCnZvaWQgaW5vcmRlcihub2RlMiogcm9vdCl7CiAgICBpZighcm9vdCkgcmV0dXJuOwogICAgY291dCA8PCAiKCI7CiAgICBpbm9yZGVyKHJvb3QtPmxlZnQpOwogICAgY291dCA8PCByb290LT54LnMgPDwgIi8iIDw8IHJvb3QtPngudmFsOwogICAgaW5vcmRlcihyb290LT5yaWdodCk7CiAgICBjb3V0IDw8ICIpIjsKfQoKaW50IG1haW4oKXsKICAgIGNpbiA+PiBuOwogICAgd2hpbGUobiAhPSAwKXsKICAgICAgICBzID0gbmV3IHNlZ190cmVlOwoKICAgICAgICBmb3IoaW50IGsgPSAwOyBrIDwgbjsgaysrKXsKICAgICAgICAgICAgc3RyaW5nIHMsIGN1cnIgPSAiIjsKICAgICAgICAgICAgY2luID4+IHM7CiAgICAgICAgICAgIGludCB0ID0gcy5sZW5ndGgoKSwgaiA9IDAsIGRhdGEgPSAwOwoKICAgICAgICAgICAgd2hpbGUoc1tqXSAhPSAnLycpCiAgICAgICAgICAgICAgICBjdXJyICs9IHNbaisrXTsKICAgICAgICAgICAgaisrOwogICAgICAgICAgICB3aGlsZShqIDwgdCl7CiAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSoxMCArIHNbal0gLSAnMCc7CiAgICAgICAgICAgICAgICBqKys7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgYXJyW2tdLnMgPSBjdXJyOwogICAgICAgICAgICBhcnJba10udmFsID0gZGF0YTsKICAgICAgICB9CgogICAgICAgIHNvcnQoYXJyLCBhcnIrbiwgY21wMSk7CgogICAgICAgIHMtPmJ1aWxkKDAsIG4tMSwgMCk7CiAgICAgICAgbm9kZTIqIGFucyA9IGJ1aWxkKDAsIG4tMSk7CiAgICAgICAgaW5vcmRlcihhbnMpOwogICAgICAgIGNvdXQgPDwgZW5kbDsKCiAgICAgICAgY2luID4+IG47CiAgICB9CiAgICByZXR1cm4gMDsKfQo=