#include <bits/stdc++.h>
using namespace std;
struct node {
  string na;
  int g, gd, p;
} pa[10005];
bool cmp1(const node &a, const node &b) {
  if (a.p != b.p) return a.p > b.p;
  if (a.gd != b.gd) return a.gd > b.gd;
  return a.g > b.g;
}
bool cmp2(node a, node b) { return a.na < b.na; }
int n;
void Add(const string &s, int a, int b) {
  for (int i = 1; i <= n; ++i)
    if (pa[i].na == s) {
      if (a > b)
        pa[i].p += 3;
      else if (a == b)
        pa[i].p += 1;
      pa[i].g += a;
      pa[i].gd += a - b;
      break;
    }
}
string s, t, u, q[55];
int ts, a, b;
node r, o;
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  cin >> n;
  ts = n * (n - 1) / 2;
  for (int i = 1; i <= n; ++i) cin >> pa[i].na;
  cin.ignore();
  for (int i = 1; i <= ts; ++i) {
    getline(cin, s, '-');
    getline(cin, t, ' ');
    cin >> u;
    for (int i = 1; i <= (int)u.size(); ++i)
      if (u[i] == ':') u[i] = ' ';
    istringstream ss(u);
    ss >> a >> b;
    cin.ignore();
    Add(s, a, b);
    Add(t, b, a);
  }
  sort(pa + 1, pa + n + 1, cmp1);
  sort(pa + 1, pa + n / 2 + 1, cmp2);
  for (int i = 1; i <= n / 2; ++i) {
    cout << pa[i].na << "\n";
  }
  return 0;
}
