#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
struct st
{
char name[40];
int score;
int win;
int lose;
}
a[60];
char str[40],s[40],t[40];
int n;
int x,y;
int search(char s[])
{
for(int i=1;i<=n;i++)
if(strlen(s)==strlen(a[i].name))
{
bool flag=1;
for(int j=0;j<strlen(s);j++)
if(a[i].name[j]!=s[j])
{
flag=0;
break;
}
if(flag)
return i;
}
}
bool cmp(st a,st b)
{
if(a.score!=b.score)
return a.score>b.score;
if(a.win-a.lose!=b.win-b.lose)
return a.win-a.lose>b.win-b.lose;
if(a.win!=b.win)
return a.win>b.win;
string aa=a.name;
string bb=b.name;
return aa<bb;
}
bool cmp2(st a,st b)
{
string aa=a.name;
string bb=b.name;
return aa<bb;
}
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
scanf("%s",a[i].name);
for(int i=1;i<=n*(n-1)/2;i++)
{
scanf("%s",str);
scanf("%d:%d",&x,&y);
int pos=0;
while(pos<strlen(str))
{
if(str[pos]=='-')
break;
pos++;
}
for(int i=0;i<pos;i++)
s[i]=str[i];
for(int i=pos+1;i<=strlen(str);i++)
t[i-pos-1]=str[i];
int ss=search(s);
int tt=search(t);
a[ss].win+=x;
a[ss].lose+=y;
a[tt].win+=y;
a[tt].lose+=x;
if(x>y)
a[ss].score+=3;
else if(x<y)
a[tt].score+=3;
else
a[ss].score++,a[tt].score++;
}
sort(a+1,a+n+1,cmp);
sort(a+1,a+n/2+1,cmp2);
for(int i=1;i<=n/2;i++)
printf("%s\n",a[i].name);
return 0;
}