#include <bits/stdc++.h>
using namespace std;
template <class T>
inline string itos(T n) {
  return (n) < 0    ? "-" + itos(-(n))
         : (n) < 10 ? (string)("") + (char)('0' + (n))
                    : itos((n) / 10) + itos((n) % 10);
}
string name[60];
map<string, int> mp;
int point[60], _plus[60], _minus[60];
vector<pair<pair<int, pair<int, int> >, string> > v;
int main(void) {
  int N, i, j;
  string s;
  cin >> N;
  for ((i) = 0; (i) < (int)(N); (i)++) {
    cin >> name[i];
    mp[name[i]] = i;
  }
  for ((i) = 0; (i) < (int)(N * (N - 1) / 2); (i)++) {
    cin >> s;
    for (j = 0;; j++) {
      if (s[j] == '-') break;
    }
    int a = mp[s.substr(0, j)];
    int b = mp[s.substr(j + 1)];
    int x, y;
    cin >> s;
    for ((j) = 0; (j) < (int)(s.length()); (j)++) {
      if (s[j] == ':') {
        s[j] = ' ';
      }
    }
    istringstream ss(s);
    ss >> x >> y;
    if (x > y)
      point[a] += 3;
    else if (x < y)
      point[b] += 3;
    else {
      point[a]++;
      point[b]++;
    }
    _plus[a] += x;
    _plus[b] += y;
    _minus[a] += y;
    _minus[b] += x;
  }
  for ((i) = 0; (i) < (int)(N); (i)++) {
    v.push_back(make_pair(
        make_pair(-point[i], make_pair(_minus[i] - _plus[i], -_plus[i])),
        name[i]));
  }
  sort(v.begin(), v.end());
  vector<string> ans;
  for ((i) = 0; (i) < (int)(N / 2); (i)++) {
    ans.push_back(v[i].second);
  }
  sort(ans.begin(), ans.end());
  for ((i) = 0; (i) < (int)(N / 2); (i)++) {
    cout << ans[i] << endl;
  }
  return 0;
}
