#include<bits/stdc++.h>
using namespace std;
int n;
struct node{
int js,jq,jf;
string name;
}a[114514];
bool cmp(node x,node y){
if(x.jf!=y.jf){
return x.jf>y.jf;
}
else if(x.js!=y.js){
return x.js>y.js;
}
else return x.jq>y.jq;
}
bool cmp2(node x,node y){
return x.name<y.name;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].name;
}
for(int i=1;i<=n*(n-1)/2;i++){
string c,ccc,cccc;
cin>>c;
int jb=0,jjbb=0,s=0,ss=0;
while(c[jb]!='-'){
ccc+=c[jb];
jb++;
}
jb++;
for(int j=jb;j<c.length();j++){
cccc+=c[j];
jjbb++;
}
string cc;
cin>>cc;
jb=0;
while(cc[jb]!=':'){
s*=10;
s+=cc[jb]-'0';
jb++;
}
jb++;
for(int j=jb;j<cc.length();j++){
ss*=10;
ss+=cc[j]-'0';
}
for(int j=1;j<=n;j++){
if(a[j].name==ccc){
a[j].jq+=s;
if(s>ss){
a[j].jf+=3;
a[j].js++;
}
if(s==ss){
a[j].jf++;
}
}
if(a[j].name==cccc){
a[j].jq+=ss;
if(ss>s){
a[j].jf+=3;
a[j].js++;
}
if(s==ss){
a[j].jf++;
}
}
}
}
sort(a+1,a+n+1,cmp);
sort(a+1,a+n/2+1,cmp2);
for(int i=1;i<=n/2;i++){
cout<<a[i].name<<endl;
}
return 0;
}