#include #include #include #include #define Nmax 101 using namespace std; vector a[Nmax]; int len[Nmax]; bool open[Nmax]; string passN[Nmax], passP[Nmax]; int N, M, T; int main(){ //freopen("fis.in", "r", stdin); cin >> N >> M; for(int i = 1; i <= M; ++i){ cin >> passN[i] >> passP[i]; } cin >> T; while(T--){ int op, x; string s; cin >> op; switch(op){ //open counter case 1: cin >> x; if(open[x]){ open[x] = false; len[x] = 0; a[x].clear(); } else { open[x] = true; } break; //add person case 2: cin >> x >> s; for(int i = 1; i <= M; ++i){ if(passN[i] == s || passP[i] == s){ a[x].push_back(i); break; } } break; //remove from queue case 3: cin >> x; a[x].erase(a[x].begin()); break; //output x case 4: cin >> x; if(a[x].empty()) cout << "-1"; else { for(vector ::reverse_iterator it = a[x].rbegin(); it != a[x].rend(); ++it){ cout << passN[*it] + " " +passP[*it] << " "; } } cout << '\n'; break; //find counter of name case 5: cin >> s; x = 0; for(int i = 1; i <= N; ++i){ for(vector ::iterator it = a[i].begin(); it != a[i].end(); ++it){ if(passN[*it] == s || passP[*it] == s) x = i; } } if(!x){ cout << "-1\n"; } else { cout << x << '\n'; } break; } } return 0; }