#include <bits/stdc++.h>
using namespace std;
vector<pair<string, pair<int, int> > > w, b, o;
vector<pair<int, string> > v1, v2, v3;
map<string, vector<pair<string, pair<string, int> > > > mm;
vector<int> was1, was2, was3;
int main() {
  int n;
  cin >> n;
  int tot = 0;
  for (int i = (0); i < (n); ++i) {
    string name, cl;
    int at, def, res, sz;
    cin >> name >> cl >> at >> def >> res >> sz;
    if (cl[0] == 'w')
      w.push_back(make_pair(name, make_pair(at, sz)));
    else if (cl[0] == 'a')
      b.push_back(make_pair(name, make_pair(def, sz)));
    else
      o.push_back(make_pair(name, make_pair(res, sz)));
    tot += sz;
  }
  int k;
  cin >> k;
  for (int i = (0); i < (k); ++i) {
    string name, type, home;
    int bonus;
    cin >> name >> type >> bonus >> home;
    mm[home].push_back(make_pair(name, make_pair(type, bonus)));
    if (type[0] == 'g')
      v1.push_back(make_pair(bonus, name));
    else if (type[0] == 's')
      v2.push_back(make_pair(bonus, name));
    else
      v3.push_back(make_pair(bonus, name));
  }
  if (k == tot) {
    pair<int, pair<int, int> > res =
        make_pair(-2000000000, make_pair(-2000000000, -2000000000));
    int v1, v2, v3;
    for (int i = (0); i < (w.size()); ++i)
      for (int j = (0); j < (b.size()); ++j)
        for (int c = (0); c < (o.size()); ++c) {
          pair<int, pair<int, int> > now =
              make_pair(w[i].second.first,
                        make_pair(b[j].second.first, o[c].second.first));
          for (int it = (0); it < (mm[w[i].first].size()); ++it)
            if (mm[w[i].first][it].second.first[0] == 'g')
              now.first += mm[w[i].first][it].second.second;
          for (int it = (0); it < (mm[b[j].first].size()); ++it)
            if (mm[b[j].first][it].second.first[0] == 's')
              now.second.first += mm[b[j].first][it].second.second;
          for (int it = (0); it < (mm[o[c].first].size()); ++it)
            if (mm[o[c].first][it].second.first[0] == 'p')
              now.second.second += mm[o[c].first][it].second.second;
          if (now > res) {
            res = now;
            v1 = i;
            v2 = j;
            v3 = c;
          }
        }
    cout << w[v1].first << " " << w[v1].second.second;
    for (int i = (0); i < (mm[w[v1].first].size()); ++i) {
      cout << " " << mm[w[v1].first][i].first;
    }
    cout << endl;
    cout << b[v2].first << " " << b[v2].second.second;
    for (int i = (0); i < (mm[b[v2].first].size()); ++i) {
      cout << " " << mm[b[v2].first][i].first;
    }
    cout << endl;
    cout << o[v3].first << " " << o[v3].second.second;
    for (int i = (0); i < (mm[o[v3].first].size()); ++i) {
      cout << " " << mm[o[v3].first][i].first;
    }
    cout << endl;
  } else {
    sort(v1.rbegin(), v1.rend());
    sort(v2.rbegin(), v2.rend());
    sort(v3.rbegin(), v3.rend());
    pair<int, pair<int, int> > res =
        make_pair(-2000000000, make_pair(-2000000000, -2000000000));
    int vv1 = -1, vv2 = -1, vv3 = -1;
    for (int i = (0); i < (w.size()); ++i)
      for (int j = (0); j < (b.size()); ++j)
        for (int c = (0); c < (o.size()); ++c) {
          int val1 = w[i].second.first;
          for (int it = (0);
               it < (((v1.size() < w[i].second.second) ? (v1.size())
                                                       : (w[i].second.second)));
               ++it)
            val1 += v1[it].first;
          int val2 = b[j].second.first;
          for (int it = (0);
               it < (((v2.size() < b[j].second.second) ? (v2.size())
                                                       : (b[j].second.second)));
               ++it)
            val2 += v2[it].first;
          int val3 = o[c].second.first;
          for (int it = (0);
               it < (((v3.size() < o[c].second.second) ? (v3.size())
                                                       : (o[c].second.second)));
               ++it)
            val3 += v3[it].first;
          pair<int, pair<int, int> > now =
              make_pair(val1, make_pair(val2, val3));
          if (now > res) {
            res = now;
            vv1 = i;
            vv2 = j;
            vv3 = c;
          }
        }
    vector<string> out1, out2, out3;
    was1.resize(v1.size(), 0);
    was2.resize(v2.size(), 0);
    was3.resize(v3.size(), 0);
    int sz1 = w[vv1].second.second;
    int sz2 = b[vv2].second.second;
    int sz3 = o[vv3].second.second;
    for (int i = (0); i < (v1.size()); ++i)
      if ((was1[i] == 0) && (sz1 > 0)) {
        sz1--;
        was1[i] = 1;
        out1.push_back(v1[i].second);
      }
    for (int i = (0); i < (v2.size()); ++i)
      if ((was2[i] == 0) && (sz2 > 0)) {
        sz2--;
        was2[i] = 1;
        out2.push_back(v2[i].second);
      }
    for (int i = (0); i < (v3.size()); ++i)
      if ((was3[i] == 0) && (sz3 > 0)) {
        sz3--;
        was3[i] = 1;
        out3.push_back(v3[i].second);
      }
    for (int i = (0); i < (v1.size()); ++i)
      if ((was1[i] == 0) && (sz2 > 0)) {
        sz2--;
        was1[i] = 1;
        out2.push_back(v1[i].second);
      }
    for (int i = (0); i < (v1.size()); ++i)
      if ((was1[i] == 0) && (sz3 > 0)) {
        sz3--;
        was1[i] = 1;
        out3.push_back(v1[i].second);
      }
    for (int i = (0); i < (v2.size()); ++i)
      if ((was2[i] == 0) && (sz1 > 0)) {
        sz1--;
        was2[i] = 1;
        out1.push_back(v2[i].second);
      }
    for (int i = (0); i < (v2.size()); ++i)
      if ((was2[i] == 0) && (sz3 > 0)) {
        sz3--;
        was2[i] = 1;
        out3.push_back(v2[i].second);
      }
    for (int i = (0); i < (v3.size()); ++i)
      if ((was3[i] == 0) && (sz1 > 0)) {
        sz1--;
        was3[i] = 1;
        out1.push_back(v3[i].second);
      }
    for (int i = (0); i < (v3.size()); ++i)
      if ((was3[i] == 0) && (sz2 > 0)) {
        sz2--;
        was3[i] = 1;
        out2.push_back(v3[i].second);
      }
    cout << w[vv1].first << " " << out1.size();
    for (int i = (0); i < (out1.size()); ++i) cout << " " << out1[i];
    cout << endl;
    cout << b[vv2].first << " " << out2.size();
    for (int i = (0); i < (out2.size()); ++i) cout << " " << out2[i];
    cout << endl;
    cout << o[vv3].first << " " << out3.size();
    for (int i = (0); i < (out3.size()); ++i) cout << " " << out3[i];
    cout << endl;
  }
  return 0;
}
