#include<iostream>
#include<string>
#include<cstdio>
#include<algorithm>
#include<vector>
#define maxn 10001000
using namespace std;
struct node {
int id;
string title, author, puber, pubyear;
vector<string> keyw;
};
int N;
vector<int> query(vector<node> &books, string temp) {
vector<int> v;
int mode = temp[0] - '0';
string t = temp.substr(3, temp.size() - 3);
if (mode == 1) {
for (int i = 0; i < books.size(); i++) {
if (books[i].title == t) v.push_back(books[i].id);
}
}
else if (mode == 2) {
for (int i = 0; i < books.size(); i++) {
if (books[i].author == t) v.push_back(books[i].id);
}
}
else if (mode == 3) {
for (int i = 0; i < books.size(); i++) {
vector<string> vstr = books[i].keyw;
for (int j = 0; j < vstr.size(); j++) {
if (vstr[j] == t) {
v.push_back(books[i].id);
break;
}
}
}
}
else if (mode == 4) {
for (int i = 0; i < books.size(); i++) {
if (books[i].puber == t) v.push_back(books[i].id);
}
}
else if (mode == 5) {
for (int i = 0; i < books.size(); i++) {
if (books[i].pubyear == t) v.push_back(books[i].id);
}
}
return v;
}
int main() {
scanf("%d", &N);
vector<node> books(N);
string keywords;
for (int i = 0; i < N; i++) {
cin >> books[i].id;
getchar();
getline(cin, books[i].title);
getline(cin, books[i].author);
getline(cin, keywords);
getline(cin, books[i].puber);
cin >> books[i].pubyear;
int a = 0;
vector<string> vstr;
for (int j = 0; j < keywords.size(); j++) {
if (keywords[j] == ' ') {
string str = keywords.substr(a, j - a);
vstr.push_back(str);
a = j + 1;
}
}
vstr.push_back(keywords.substr(a, keywords.size() - a));
books[i].keyw = vstr;
}
int M;
scanf("%d", &M);
getchar();
string test;
while(M--) {
getline(cin, test);
vector<int> v = query(books, test);
cout << test << endl;
if (v.size() == 0) {
cout << "Not Found" << endl;
}
else {
sort(v.begin(), v.end());
for (int i = 0; i < v.size(); i++) {
printf("%07d\n", v[i]);
}
}
}
return 0;
}