#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define vint vector::iterator #define vintp vector >::iterator #define ll long long #define maxn 251 #define mod 329885391853LL using namespace std; ifstream fin ("A.in"); ofstream fout("A.out"); string name[201],surname[201]; map M,MM; int q[201][201]; int st[201],l[201]; int state[201]; int wh[201],n,m,t,op,x; string N; int main() { cin>>n>>m; for (int i=1; i<=n; ++i) st[i] = 1; for (int i=1; i<=m; ++i) { cin>>name[i]>>surname[i]; M.insert (make_pair(name[i],i)); MM.insert (make_pair(surname[i],i)); } cin>>t; for (int i=1; i<=t; ++i) { cin>>op; if (op == 1) { cin>>x; state[x] = 1 - state[x]; if (state[x] == 0) { for (int j=st[x]; j<=l[x]; ++j) wh[q[x][j]] = 0; st[x] = l[x] + 1; } } else if (op == 2) { cin>>x>>N; map::iterator it = M.find(N); if (it != M.end()) { q[x][++l[x]] = it->second; wh[it->second] = x; } else { it = MM.find(N); q[x][++l[x]] = it->second; wh[it->second] = x; } } else if (op == 3) { cin>>x; wh[q[x][st[x]]]= 0; ++st[x]; } else if (op == 4) { cin>>x; if (st[x] > l[x]) cout<<-1; else {for (int j = l[x]; j > st[x]; --j) { cout<>N; map::iterator it = M.find(N); if (it != M.end()) { x = it->second; } else { it = MM.find(N); x = it->second; } if (wh[x] == 0) cout<<-1; else cout<