#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
using namespace std;
int n;
struct team
{
string name;
int sco,win,bal;
}a[55];
bool cmp(team x,team y)
{
if(x.sco!=y.sco)return x.sco>y.sco;
if(x.win!=y.win)return x.win>y.win;
if(x.bal!=y.bal)return x.bal>y.bal;
return x.name<y.name;
}
string ans[55];
int main()
{
scanf("%d",&n);
for(int i=1;i<=n;i++)
cin>>a[i].name;
for(int i=1;i<=n*(n-1)/2;i++)
{
int cnt=0;
string s,name[2];
name[0]="";
name[1]="";
int game1,game2,team1,team2;
cin>>s;
s+='-';
scanf("%d:%d",&game1,&game2);
for(int j=0;j<s.length();j++)
{
if(s[j]!='-')name[cnt]+=s[j];
else cnt++;
}
for(int j=1;j<=n;j++)
{
if(a[j].name.length()!=name[0].length())continue;
bool flag=0;
for(int k=0;k<=name[0].length();k++)
if(a[j].name[k]!=name[0][k])flag=1;
if(!flag)
{
team1=j;
break;
}
}
for(int j=1;j<=n;j++)
{
if(a[j].name.length()!=name[1].length())continue;
bool flag=0;
for(int k=0;k<=name[1].length();k++)
if(a[j].name[k]!=name[1][k])flag=1;
if(!flag)
{
team2=j;
break;
}
}
a[team1].bal+=game1;
a[team2].bal+=game2;
if(game1==game2)
{
a[team1].sco+=1;
a[team2].sco+=1;
}
else if(game1>game2)
{
a[team1].sco+=3;
a[team1].win++;
}
else if(game1<game2)
{
a[team2].sco+=3;
a[team2].win++;
}
}
sort(a+1,a+n+1,cmp);
int cnt=0;
for(int i=1;i<=n/2;i++)
ans[++cnt]=a[i].name;
sort(ans+1,ans+1+cnt);
for(int i=1;i<=cnt;i++)
cout<<ans[i]<<endl;
return 0;
}