#include <bits/stdc++.h>
using namespace std;
template <class T>
T _abs(T n) {
  return (n < 0 ? -n : n);
}
template <class T>
T _max(T a, T b) {
  return (!(a < b) ? a : b);
}
template <class T>
T _min(T a, T b) {
  return (a < b ? a : b);
}
template <class T>
T sq(T x) {
  return x * x;
}
template <class T>
T gcd(T a, T b) {
  return (b != 0 ? gcd<T>(b, a % b) : a);
}
template <class T>
T lcm(T a, T b) {
  return (a / gcd<T>(a, b) * b);
}
template <class T>
T power(T N, T P) {
  return (P == 0) ? 1 : N * power(N, P - 1);
}
template <class T>
T coordinate_dist(T x1, T y1, T x2, T y2) {
  return sqrt(sq(x1 - x2) + sq(y1 - y2));
}
int rr[] = {1, 0, -1, 0};
int cc[] = {0, 1, 0, -1};
map<string, int> mp;
map<string, int>::iterator it;
struct data {
  string a;
  int b;
};
bool cmp(const data &x, const data &y) {
  if (x.b > y.b) return true;
  if (x.b == y.b) {
    if (x.a < y.a) return true;
    return false;
  }
  return false;
}
int main() {
  int i, j, n, m, k, t, sum;
  string a, b, c;
  vector<string> v;
  cin >> a;
  cin >> n;
  getchar();
  while (n--) {
    v.clear();
    getline(cin, b);
    istringstream iss(b);
    do {
      iss >> c;
      v.push_back(c);
    } while (iss);
    v.pop_back();
    if (v.size() == 5) {
      k = v[3].size();
      b = "";
      for (i = 0; i < k; i++) {
        if (isalpha(v[3][i]))
          b += v[3][i];
        else
          break;
      }
      if (v[1] == "posted") {
        if (mp.find(v[0]) == mp.end() && v[0] != a) mp[v[0]] = 0;
        if (mp.find(b) == mp.end() && b != a) mp[b] = 0;
        if (v[0] == a) mp[b] += 15;
        if (b == a) mp[v[0]] += 15;
      } else {
        if (mp.find(v[0]) == mp.end() && v[0] != a) mp[v[0]] = 0;
        if (mp.find(b) == mp.end() && b != a) mp[b] = 0;
        if (v[0] == a) mp[b] += 10;
        if (b == a) mp[v[0]] += 10;
      }
    } else {
      k = v[2].size();
      b = "";
      for (i = 0; i < k; i++) {
        if (isalpha(v[2][i]))
          b += v[2][i];
        else
          break;
      }
      if (mp.find(v[0]) == mp.end() && v[0] != a) mp[v[0]] = 0;
      if (mp.find(b) == mp.end() && b != a) mp[b] = 0;
      if (v[0] == a) mp[b] += 5;
      if (b == a) mp[v[0]] += 5;
    }
  }
  n = 0;
  data ar[110];
  for (it = mp.begin(); it != mp.end(); it++) {
    ar[n].a = it->first, ar[n].b = it->second;
    n++;
  }
  sort(ar, ar + n, cmp);
  for (i = 0; i < n; i++) cout << ar[i].a << endl;
  return 0;
}
