#include <bits/stdc++.h>
using namespace std;
using str = string;
struct Man {
    str name, fam;
    int day, mth, year, mark;
    vector<str> lst;
    bool operator<(Man& other) {
        if (mark != other.mark) return mark > other.mark;
        if (year != other.year) return year < other.year;
        if (mth != other.mth) return mth < other.mth;
        if (day != other.day) return day < other.day;
        if (fam != other.fam) return fam < other.fam;
        return name < other.name;
    }
};
struct Univer {
    str name;
    int c;
    vector<Man> lst;
};
int main() {
    int n;
    cin >> n;
    map<str, Univer> dct;
    while (n--) {
        Univer u;
        cin >> u.name >> u.c;
        dct[u.name] = u;
    }
    int m;
    cin >> m;
    vector<Man> a;
    while (m--) {
        Man s;
        int x;
        cin >> s.name >> s.fam >> s.day >> s.mth >> s.year >> s.mark >> x;
        while (x--) {
            str univ;
            cin >> univ;
            s.lst.push_back(univ);
        }
        a.push_back(s);
    }
    sort(a.begin(), a.end());
    for (auto stud : a) {
        for (auto i : stud.lst) {
            auto p = dct.find(i);
            if (p != dct.end() && p->second.lst.size() < p->second.c) {
                p->second.lst.push_back(stud);
                break;
            }
        }
    }
    for (auto [nm, un] : dct) {
        sort(un.lst.begin(), un.lst.end(), [](Man& a, Man& b) {
            if (a.fam != b.fam) return a.fam < b.fam;
            if (a.name != b.name) return a.name < b.name;
            if (a.year != b.year) return a.year < b.year;
            if (a.mth != b.mth) return a.mth < b.mth;
            return a.day < b.day;
        });
        cout << nm;
        for (auto i : un.lst) {cout << "    " << i.name << ' ' << i.fam;}
        cout << '\n';
    }
    return 0;
 }
				I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CnVzaW5nIHN0ciA9IHN0cmluZzsKc3RydWN0IE1hbiB7CiAgICBzdHIgbmFtZSwgZmFtOwogICAgaW50IGRheSwgbXRoLCB5ZWFyLCBtYXJrOwogICAgdmVjdG9yPHN0cj4gbHN0OwogICAgYm9vbCBvcGVyYXRvcjwoTWFuJiBvdGhlcikgewogICAgICAgIGlmIChtYXJrICE9IG90aGVyLm1hcmspIHJldHVybiBtYXJrID4gb3RoZXIubWFyazsKICAgICAgICBpZiAoeWVhciAhPSBvdGhlci55ZWFyKSByZXR1cm4geWVhciA8IG90aGVyLnllYXI7CiAgICAgICAgaWYgKG10aCAhPSBvdGhlci5tdGgpIHJldHVybiBtdGggPCBvdGhlci5tdGg7CiAgICAgICAgaWYgKGRheSAhPSBvdGhlci5kYXkpIHJldHVybiBkYXkgPCBvdGhlci5kYXk7CiAgICAgICAgaWYgKGZhbSAhPSBvdGhlci5mYW0pIHJldHVybiBmYW0gPCBvdGhlci5mYW07CiAgICAgICAgcmV0dXJuIG5hbWUgPCBvdGhlci5uYW1lOwogICAgfQp9OwpzdHJ1Y3QgVW5pdmVyIHsKICAgIHN0ciBuYW1lOwogICAgaW50IGM7CiAgICB2ZWN0b3I8TWFuPiBsc3Q7Cn07CmludCBtYWluKCkgewogICAgaW50IG47CiAgICBjaW4gPj4gbjsKICAgIG1hcDxzdHIsIFVuaXZlcj4gZGN0OwogICAgd2hpbGUgKG4tLSkgewogICAgICAgIFVuaXZlciB1OwogICAgICAgIGNpbiA+PiB1Lm5hbWUgPj4gdS5jOwogICAgICAgIGRjdFt1Lm5hbWVdID0gdTsKICAgIH0KICAgIGludCBtOwogICAgY2luID4+IG07CiAgICB2ZWN0b3I8TWFuPiBhOwogICAgd2hpbGUgKG0tLSkgewogICAgICAgIE1hbiBzOwogICAgICAgIGludCB4OwogICAgICAgIGNpbiA+PiBzLm5hbWUgPj4gcy5mYW0gPj4gcy5kYXkgPj4gcy5tdGggPj4gcy55ZWFyID4+IHMubWFyayA+PiB4OwogICAgICAgIHdoaWxlICh4LS0pIHsKICAgICAgICAgICAgc3RyIHVuaXY7CiAgICAgICAgICAgIGNpbiA+PiB1bml2OwogICAgICAgICAgICBzLmxzdC5wdXNoX2JhY2sodW5pdik7CiAgICAgICAgfQogICAgICAgIGEucHVzaF9iYWNrKHMpOwogICAgfQogICAgc29ydChhLmJlZ2luKCksIGEuZW5kKCkpOwogICAgZm9yIChhdXRvIHN0dWQgOiBhKSB7CiAgICAgICAgZm9yIChhdXRvIGkgOiBzdHVkLmxzdCkgewogICAgICAgICAgICBhdXRvIHAgPSBkY3QuZmluZChpKTsKICAgICAgICAgICAgaWYgKHAgIT0gZGN0LmVuZCgpICYmIHAtPnNlY29uZC5sc3Quc2l6ZSgpIDwgcC0+c2Vjb25kLmMpIHsKICAgICAgICAgICAgICAgIHAtPnNlY29uZC5sc3QucHVzaF9iYWNrKHN0dWQpOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICBmb3IgKGF1dG8gW25tLCB1bl0gOiBkY3QpIHsKICAgICAgICBzb3J0KHVuLmxzdC5iZWdpbigpLCB1bi5sc3QuZW5kKCksIFtdKE1hbiYgYSwgTWFuJiBiKSB7CiAgICAgICAgICAgIGlmIChhLmZhbSAhPSBiLmZhbSkgcmV0dXJuIGEuZmFtIDwgYi5mYW07CiAgICAgICAgICAgIGlmIChhLm5hbWUgIT0gYi5uYW1lKSByZXR1cm4gYS5uYW1lIDwgYi5uYW1lOwogICAgICAgICAgICBpZiAoYS55ZWFyICE9IGIueWVhcikgcmV0dXJuIGEueWVhciA8IGIueWVhcjsKICAgICAgICAgICAgaWYgKGEubXRoICE9IGIubXRoKSByZXR1cm4gYS5tdGggPCBiLm10aDsKICAgICAgICAgICAgcmV0dXJuIGEuZGF5IDwgYi5kYXk7CiAgICAgICAgfSk7CiAgICAgICAgY291dCA8PCBubTsKICAgICAgICBmb3IgKGF1dG8gaSA6IHVuLmxzdCkge2NvdXQgPDwgIiAgICAiIDw8IGkubmFtZSA8PCAnICcgPDwgaS5mYW07fQogICAgICAgIGNvdXQgPDwgJ1xuJzsKICAgIH0KICAgIHJldHVybiAwOwogfQ==
				
				
				
				
				
			 
			
				
			
			
				
MwpNU1UgMQpIU0UgMgpNSVBUIDEwMAo1Ckl2YW4gSXZhbm92IDEgMSAxOTAwIDEwMCAyIE1TVSBIU0UKUGV0ciBQZXRyb3YgMiAxIDE5MDAgOTAgMiBNU1UgSFNFCkFsZXhhbmRlciBTaWRvcm92IDMgMSAxOTAwIDExMCAyIE1JUFQgSFNFCkl2YW4gUGV0cm92IDMgMSAxOTAwIDEwMCAzIEhTRSBNU1UgTUlQVApQZXRyIEl2YW5vdiA0IDEgMTkwMCA4MCAxIEhTRQ==
3
MSU 1
HSE 2
MIPT 100
5
Ivan Ivanov 1 1 1900 100 2 MSU HSE
Petr Petrov 2 1 1900 90 2 MSU HSE
Alexander Sidorov 3 1 1900 110 2 MIPT HSE
Ivan Petrov 3 1 1900 100 3 HSE MSU MIPT
Petr Ivanov 4 1 1900 80 1 HSE