#include <bits/stdc++.h>
#define MAX 10000001
#define ll long long
#define fastsync() \
ios_base::sync_with_stdio(false); \
cin.tie(NULL); \
cout.tie(NULL);
const int mod = 1e9 + 7;
using namespace std;
struct sp {
string ms, ten, gia;
};
struct node {
sp data;
node *next;
};
void nhap(sp &x) {
getline(cin, x.ms);
getline(cin, x.ten);
getline(cin, x.gia);
}
node *makeNode(sp x) {
node *newnode = new node;
newnode->next = NULL;
newnode->data = x;
return newnode;
}
void in(node *x) {
cout << x->data.ms << ' ' << x->data.ten << ' ' << x->data.gia << endl;
}
void duyet(node *head) {
while (head != NULL) {
in(head);
head = head->next;
}
}
void themdau(node *&head, sp x) {
node *newnode = makeNode(x);
newnode->next = head;
head = newnode;
}
void xoadau(node *&head) {
if (head == NULL)
return;
node *tmp = head;
head = tmp->next;
delete tmp;
}
void tim(node *head, string s) {
while (head != NULL) {
if (head->data.ten == s) {
in(head);
return;
}
head = head->next;
}
cout << -1;
}
int main() {
fastsync();
node *head = NULL;
int c;
while (1) {
cin >> c;
cin.ignore();
if (c == 1) {
int sl;
cin >> sl;
cin.ignore();
cout << sl << endl;
while (sl--) {
sp moi;
nhap(moi);
themdau(head, moi);
}
}
else if (c == 2) {
string ten;
getline(cin, ten);
tim(head, ten);
}
else {
xoadau(head);
duyet(head);
return 0;
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgTUFYIDEwMDAwMDAxCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgZmFzdHN5bmMoKSAgICAgICAgICAgICAgICAgICAgXAogICAgaW9zX2Jhc2U6OnN5bmNfd2l0aF9zdGRpbyhmYWxzZSk7IFwKICAgIGNpbi50aWUoTlVMTCk7ICAgICAgICAgICAgICAgICAgICBcCiAgICBjb3V0LnRpZShOVUxMKTsKY29uc3QgaW50IG1vZCA9IDFlOSArIDc7CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3Qgc3AgewogICAgc3RyaW5nIG1zLCB0ZW4sIGdpYTsKfTsKCnN0cnVjdCBub2RlIHsKICAgIHNwIGRhdGE7CiAgICBub2RlICpuZXh0Owp9OwoKdm9pZCBuaGFwKHNwICZ4KSB7CiAgICBnZXRsaW5lKGNpbiwgeC5tcyk7CiAgICBnZXRsaW5lKGNpbiwgeC50ZW4pOwogICAgZ2V0bGluZShjaW4sIHguZ2lhKTsKfQoKbm9kZSAqbWFrZU5vZGUoc3AgeCkgewogICAgbm9kZSAqbmV3bm9kZSA9IG5ldyBub2RlOwogICAgbmV3bm9kZS0+bmV4dCA9IE5VTEw7CiAgICBuZXdub2RlLT5kYXRhID0geDsKICAgIHJldHVybiBuZXdub2RlOwp9Cgp2b2lkIGluKG5vZGUgKngpIHsKICAgIGNvdXQgPDwgeC0+ZGF0YS5tcyA8PCAnICcgPDwgeC0+ZGF0YS50ZW4gPDwgJyAnIDw8IHgtPmRhdGEuZ2lhIDw8IGVuZGw7Cn0KCnZvaWQgZHV5ZXQobm9kZSAqaGVhZCkgewogICAgd2hpbGUgKGhlYWQgIT0gTlVMTCkgewogICAgICAgIGluKGhlYWQpOwogICAgICAgIGhlYWQgPSBoZWFkLT5uZXh0OwogICAgfQp9Cgp2b2lkIHRoZW1kYXUobm9kZSAqJmhlYWQsIHNwIHgpIHsKICAgIG5vZGUgKm5ld25vZGUgPSBtYWtlTm9kZSh4KTsKICAgIG5ld25vZGUtPm5leHQgPSBoZWFkOwogICAgaGVhZCA9IG5ld25vZGU7Cn0KCnZvaWQgeG9hZGF1KG5vZGUgKiZoZWFkKSB7CiAgICBpZiAoaGVhZCA9PSBOVUxMKQogICAgICAgIHJldHVybjsKICAgIG5vZGUgKnRtcCA9IGhlYWQ7CiAgICBoZWFkID0gdG1wLT5uZXh0OwogICAgZGVsZXRlIHRtcDsKfQoKdm9pZCB0aW0obm9kZSAqaGVhZCwgc3RyaW5nIHMpIHsKICAgIHdoaWxlIChoZWFkICE9IE5VTEwpIHsKICAgICAgICBpZiAoaGVhZC0+ZGF0YS50ZW4gPT0gcykgewogICAgICAgICAgICBpbihoZWFkKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBoZWFkID0gaGVhZC0+bmV4dDsKICAgIH0KICAgIGNvdXQgPDwgLTE7Cn0KCmludCBtYWluKCkgewogICAgZmFzdHN5bmMoKTsKICAgIG5vZGUgKmhlYWQgPSBOVUxMOwogICAgaW50IGM7CiAgICB3aGlsZSAoMSkgewogICAgICAgIGNpbiA+PiBjOwogICAgICAgIGNpbi5pZ25vcmUoKTsKICAgICAgICBpZiAoYyA9PSAxKSB7CiAgICAgICAgICAgIGludCBzbDsKICAgICAgICAgICAgY2luID4+IHNsOwogICAgICAgICAgICBjaW4uaWdub3JlKCk7CiAgICAgICAgICAgIGNvdXQgPDwgc2wgPDwgZW5kbDsKICAgICAgICAgICAgd2hpbGUgKHNsLS0pIHsKICAgICAgICAgICAgICAgIHNwIG1vaTsKICAgICAgICAgICAgICAgIG5oYXAobW9pKTsKICAgICAgICAgICAgICAgIHRoZW1kYXUoaGVhZCwgbW9pKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBlbHNlIGlmIChjID09IDIpIHsKICAgICAgICAgICAgc3RyaW5nIHRlbjsKICAgICAgICAgICAgZ2V0bGluZShjaW4sIHRlbik7CiAgICAgICAgICAgIHRpbShoZWFkLCB0ZW4pOwogICAgICAgIH0KICAgICAgICBlbHNlIHsKICAgICAgICAgICAgeG9hZGF1KGhlYWQpOwogICAgICAgICAgICBkdXlldChoZWFkKTsKICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIDA7Cn0=