#include <bits/stdc++.h>
using namespace std;
int n, k, ss;
vector<pair<pair<int, int>, string> > w, a, o;
vector<pair<pair<int, string>, string> > g, se, p;
int main() {
  cin >> n;
  for (int i = 0; i < n; i++) {
    string s, t;
    int v, x, y, z;
    cin >> s >> t >> v >> x >> y >> z;
    if (t == "weapon") w.push_back(make_pair(pair<int, int>(v, z), s));
    if (t == "armor") a.push_back(make_pair(pair<int, int>(x, z), s));
    if (t == "orb") o.push_back(make_pair(pair<int, int>(y, z), s));
    ss += z;
  }
  cin >> k;
  for (int j = 0; j < k; j++) {
    string s, t, v;
    int u;
    cin >> s >> t >> u >> v;
    if (t == "gladiator") g.push_back(make_pair(make_pair(u, v), s));
    if (t == "sentry") se.push_back(make_pair(make_pair(u, v), s));
    if (t == "physician") p.push_back(make_pair(make_pair(u, v), s));
  }
  if (ss == k) {
    int wm, am, om;
    vector<string> vw, va, vo, v;
    for (int i = 0; i < w.size(); i++) {
      v.clear();
      for (int j = 0; j < g.size(); j++) {
        if (g[j].first.second == w[i].second)
          w[i].first.first += g[j].first.first, v.push_back(g[j].second);
      }
      for (int j = 0; j < se.size(); j++)
        if (se[j].first.second == w[i].second) v.push_back(se[j].second);
      for (int j = 0; j < p.size(); j++)
        if (p[j].first.second == w[i].second) v.push_back(p[j].second);
      if (!i || w[i].first.first > w[wm].first.first) wm = i, vw = v;
    }
    for (int i = 0; i < a.size(); i++) {
      v.clear();
      for (int j = 0; j < se.size(); j++) {
        if (se[j].first.second == a[i].second)
          a[i].first.first += se[j].first.first, v.push_back(se[j].second);
      }
      for (int j = 0; j < g.size(); j++)
        if (g[j].first.second == a[i].second) v.push_back(g[j].second);
      for (int j = 0; j < p.size(); j++)
        if (p[j].first.second == a[i].second) v.push_back(p[j].second);
      if (!i || a[i].first.first > a[am].first.first) am = i, va = v;
    }
    for (int i = 0; i < o.size(); i++) {
      v.clear();
      for (int j = 0; j < p.size(); j++) {
        if (p[j].first.second == o[i].second)
          o[i].first.first += p[j].first.first, v.push_back(p[j].second);
      }
      for (int j = 0; j < g.size(); j++)
        if (g[j].first.second == o[i].second) v.push_back(g[j].second);
      for (int j = 0; j < se.size(); j++)
        if (se[j].first.second == o[i].second) v.push_back(se[j].second);
      if (!i || o[i].first.first > o[om].first.first) om = i, vo = v;
    }
    cout << w[wm].second << " " << vw.size() << " ";
    for (int i = 0; i < vw.size(); i++) cout << vw[i] << " ";
    cout << endl << a[am].second << " " << va.size() << " ";
    for (int i = 0; i < va.size(); i++) cout << va[i] << " ";
    cout << endl << o[om].second << " " << vo.size() << " ";
    for (int i = 0; i < vo.size(); i++) cout << vo[i] << " ";
  } else {
    int wm = 0, am = 0, om = 0, gs[11], ses[11], ps[11];
    sort(g.begin(), g.end());
    sort(se.begin(), se.end());
    sort(p.begin(), p.end());
    reverse(g.begin(), g.end());
    reverse(se.begin(), se.end());
    reverse(p.begin(), p.end());
    gs[0] = ses[0] = ps[0] = 0;
    for (int i = 1; i < 11; i++)
      gs[i] = gs[i - 1] + (i <= g.size() ? g[i - 1].first.first : 0);
    for (int i = 1; i < 11; i++)
      ses[i] = ses[i - 1] + (i <= se.size() ? se[i - 1].first.first : 0);
    for (int i = 1; i < 11; i++)
      ps[i] = ps[i - 1] + (i <= p.size() ? p[i - 1].first.first : 0);
    for (int i = 0; i < w.size(); i++) {
      w[i].first.first += gs[w[i].first.second];
      if (w[i].first.first > w[wm].first.first) wm = i;
    }
    for (int i = 0; i < a.size(); i++) {
      a[i].first.first += ses[a[i].first.second];
      if (a[i].first.first > a[am].first.first) am = i;
    }
    for (int i = 0; i < o.size(); i++) {
      o[i].first.first += ps[o[i].first.second];
      if (o[i].first.first > o[om].first.first) om = i;
    }
    int gn = w[wm].first.second < g.size() ? w[wm].first.second : g.size();
    int sen = a[am].first.second < se.size() ? a[am].first.second : se.size();
    int pn = o[om].first.second < p.size() ? o[om].first.second : p.size();
    int wr = w[wm].first.second - gn, ar = a[am].first.second - sen,
        orr = o[om].first.second - pn;
    int gc = gn, senc = sen, pc = pn;
    vector<string> vw, va, vo;
    while (wr) {
      if (gc < g.size()) vw.push_back(g[gc++].second), wr--;
      if (!wr) break;
      if (senc < se.size()) vw.push_back(se[senc++].second), wr--;
      if (!wr) break;
      if (pc < p.size()) vw.push_back(p[pc++].second), wr--;
      if (gc == g.size() && senc == se.size() && pc == p.size()) break;
    }
    while (ar) {
      if (gc < g.size()) va.push_back(g[gc++].second), ar--;
      if (!ar) break;
      if (senc < se.size()) va.push_back(se[senc++].second), ar--;
      if (!ar) break;
      if (pc < p.size()) va.push_back(p[pc++].second), ar--;
      if (gc == g.size() && senc == se.size() && pc == p.size()) break;
    }
    while (orr) {
      if (gc < g.size()) vo.push_back(g[gc++].second), orr--;
      if (!orr) break;
      if (senc < se.size()) vo.push_back(se[senc++].second), orr--;
      if (!orr) break;
      if (pc < p.size()) vo.push_back(p[pc++].second), orr--;
      if (gc == g.size() && senc == se.size() && pc == p.size()) break;
    }
    cout << w[wm].second << " " << gn + vw.size() << " ";
    for (int i = 0; i < gn; i++) cout << g[i].second << " ";
    for (int i = 0; i < vw.size(); i++) cout << vw[i] << " ";
    cout << endl << a[am].second << " " << sen + va.size() << " ";
    for (int i = 0; i < sen; i++) cout << se[i].second << " ";
    for (int i = 0; i < va.size(); i++) cout << va[i] << " ";
    cout << endl << o[om].second << " " << pn + vo.size() << " ";
    for (int i = 0; i < pn; i++) cout << p[i].second << " ";
    for (int i = 0; i < vo.size(); i++) cout << vo[i] << " ";
  }
}
