#include<bits/stdc++.h>
using namespace std;
int n,cnt=1;
string t;
string s[1005];
struct node{
string sp;
string a[1005];
int b[1005];
int cntp;
int idx;
}per[1005];
int m;
char ccmp[1005];
struct qwecmp{
string type;
int idxxx;
}cmpcmp[1005];
bool cmp(node x,node y){
for(int i=1;i<=m;i++){
if(x.a[cmpcmp[i].idxxx]!=""){
if(x.a[cmpcmp[i].idxxx]==y.a[cmpcmp[i].idxxx]) continue;
else if(ccmp[cmpcmp[i].idxxx]=='-') return x.a[cmpcmp[i].idxxx]>y.a[cmpcmp[i].idxxx];
else return x.a[cmpcmp[i].idxxx]<y.a[cmpcmp[i].idxxx];
}else{
if(x.b[cmpcmp[i].idxxx]==y.b[cmpcmp[i].idxxx]) continue;
else if(ccmp[cmpcmp[i].idxxx]=='-') return x.b[cmpcmp[i].idxxx]>y.b[cmpcmp[i].idxxx];
else return x.b[cmpcmp[i].idxxx]<y.b[cmpcmp[i].idxxx];
}
}
return x.idx<y.idx;
}
int main(){
cin>>n>>t;
for(int i=0;i<t.size();i++){
if(t[i]==',') cnt++;
else s[cnt]+=t[i];
}
for(int i=1;i<n;i++){
cin>>per[i].sp;
per[i].cntp=1,per[i].idx=i;
for(int j=0;j<per[i].sp.size();j++){
if(per[i].sp[j]==',') per[i].cntp++;
else if('0'<=per[i].sp[j]&&per[i].sp[j]<='9') per[i].b[per[i].cntp]=per[i].b[per[i].cntp]*10+per[i].sp[j]-'0';
else per[i].a[per[i].cntp]+=per[i].sp[j];
}
}
cin>>m;
for(int i=1;i<=m;i++){
cin>>cmpcmp[i].type;
for(int j=1;j<=cnt;j++)
if(s[j]==cmpcmp[i].type.substr(0,cmpcmp[i].type.size()-1))
ccmp[j]=cmpcmp[i].type[cmpcmp[i].type.size()-1],cmpcmp[i].idxxx=j;
}
sort(per+1,per+n,cmp);
cout<<t<<endl;
for(int i=1;i<n;i++)
cout<<per[i].sp<<endl;
return 0;
}