#include <bits/stdc++.h>
using namespace std;
const int N = 55;
struct C {
string na;
int sc, jq, sq;
} a[N];
unordered_map<string, int> p;
int n, nu1, nu2;
string na1, na2, s;
bool cmp(C a, C b) {
if (a.sc != b.sc) {
return a.sc > b.sc;
} else if (a.jq - a.sq != b.jq - b.sq) {
return a.jq - a.sq > b.jq - b.sq;
} else {
return a.jq > b.jq;
}
}
bool cmp2(C a, C b) {
return a.na < b.na;
}
int main() {
cin >> n;
for (int i = 1; i <= n; ++i) {
cin >> a[i].na;
p[a[i].na] = i;
}
for (int i = 1; i <= n * (n - 1) / 2; ++i) {
cin >> s;
for (int j = 0; j < s.size(); ++j) {
if (s[j] == '-') {
na1 = s.substr(0, j);
na2 = s.substr(j + 1, s.size() - j - 1);
break;
}
}
cin >> s;
nu1 = nu2 = 0;
bool f = 0;
for (int j = 0; j < s.size(); ++j) {
if (s[j] == ':') {
f = 1;
} else if (f) {
nu2 = nu2 * 2 + s[j] - '0';
} else {
nu1 = nu1 * 2 + s[j] - '0';
}
}
a[p[na1]].jq += nu1;
a[p[na1]].sq += nu2;
a[p[na2]].jq += nu2;
a[p[na2]].sq += nu1;
if (nu1 > nu2) {
a[p[na1]].sc += 3;
} else if (nu2 > nu1) {
a[p[na2]].sc += 3;
} else {
a[p[na1]].sc += 1;
a[p[na2]].sc += 1;
}
}
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].na << '\n';
}
return 0;
}