#include <bits/stdc++.h>
using namespace std;
struct Node{
string name;
int jsq; //净胜球
int jqs; //进球数
int sc; //分数
}a[105];
int n,s1,s2;
string n1,n2;
char ch;
map<string,int> score,jqs,jsq;
bool cmp(Node a,Node b){
if(a.sc == b.sc){
if(a.jsq == b.jsq){
return a.jqs > b.jqs;
}
else{
return a.jsq > b.jsq;
}
}
else{
return a.sc > b.sc;
}
}
bool cmp2(Node a,Node b){
return a.name < b.name;
}
int main(){
std::ios::sync_with_stdio(false);
scanf("%d",&n);
for(int i=1;i<=n;i++){
cin >> a[i].name;
a[i].jsq=a[i].jqs=a[i].sc=0;
score[a[i].name] = jqs[a[i].name] = jsq[a[i].name] = 0;
}
for(int i=1;i<=n*(n-1)/2;i++){
n1="",n2="";s1=0,s2=0;
while(1){
scanf("%c",&ch);
if(ch == '-') break;
else if((ch>='a'&&ch<='z') || (ch>='A'&&ch<='Z')) n1+=ch;
}
while(1){
scanf("%c",&ch);
if(ch == ' ') break;
else n2+=ch;
}
while(1){
scanf("%c",&ch);
if(ch == ':') break;
else s1*=10,s1+=ch-'0';
}
scanf("%d",&s2);
if(s1 > s2) score[n1]+=3;
else if(s1 == s2) score[n1]++,score[n2]++;
else if(s1 < s2) score[n2]+=3;
jsq[n1]+=s1-s2;jsq[n2]+=s2-s1;
jqs[n1]+=s1;jqs[n2]+=s2;
}
for(int i=1;i<=n;i++){
a[i].sc=score[a[i].name];
a[i].jqs=jqs[a[i].name];
a[i].jsq=jsq[a[i].name];
}
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;
if(i != n/2) cout << "\n";
}
return 0;
}