#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int componentCnt = 0;
// component[node] = component number of node
vector<int> component;
// stores all alive nodes of each component
vector<set<int>> compSet;
void dfs(int node,
vector<vector<int>> &adj,
vector<bool> &vis)
{
vis[node] = true;
component[node] = componentCnt;
compSet[componentCnt].insert(node);
for (int child : adj[node])
{
if (!vis[child])
dfs(child, adj, vis);
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int pods, edges;
cin >> pods >> edges;
vector<vector<int>> adj(pods + 1);
for (int i = 0; i < edges; i++)
{
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
component.assign(pods + 1, 0);
compSet.resize(pods + 1);
vector<bool> vis(pods + 1, false);
// Find connected components
for (int i = 1; i <= pods; i++)
{
if (!vis[i])
{
componentCnt++;
dfs(i, adj, vis);
}
}
int q;
cin >> q;
while (q--)
{
int type, x;
cin >> type >> x;
int id = component[x];
if (type == 1)
{
if (compSet[id].empty())
{
cout << -1 << "\n";
}
else if (compSet[id].count(x))
{
cout << x << "\n";
}
else
{
cout << *compSet[id].begin() << "\n";
}
}
else
{
compSet[id].erase(x);
}
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0eXBlZGVmIGxvbmcgbG9uZyBsbDsKCmludCBjb21wb25lbnRDbnQgPSAwOwoKLy8gY29tcG9uZW50W25vZGVdID0gY29tcG9uZW50IG51bWJlciBvZiBub2RlCnZlY3RvcjxpbnQ+IGNvbXBvbmVudDsKCi8vIHN0b3JlcyBhbGwgYWxpdmUgbm9kZXMgb2YgZWFjaCBjb21wb25lbnQKdmVjdG9yPHNldDxpbnQ+PiBjb21wU2V0OwoKdm9pZCBkZnMoaW50IG5vZGUsCiAgICAgICAgIHZlY3Rvcjx2ZWN0b3I8aW50Pj4gJmFkaiwKICAgICAgICAgdmVjdG9yPGJvb2w+ICZ2aXMpCnsKICAgIHZpc1tub2RlXSA9IHRydWU7CgogICAgY29tcG9uZW50W25vZGVdID0gY29tcG9uZW50Q250OwogICAgY29tcFNldFtjb21wb25lbnRDbnRdLmluc2VydChub2RlKTsKCiAgICBmb3IgKGludCBjaGlsZCA6IGFkaltub2RlXSkKICAgIHsKICAgICAgICBpZiAoIXZpc1tjaGlsZF0pCiAgICAgICAgICAgIGRmcyhjaGlsZCwgYWRqLCB2aXMpOwogICAgfQp9CgppbnQgbWFpbigpCnsKICAgIGlvczo6c3luY193aXRoX3N0ZGlvKGZhbHNlKTsKICAgIGNpbi50aWUobnVsbHB0cik7CgogICAgaW50IHBvZHMsIGVkZ2VzOwogICAgY2luID4+IHBvZHMgPj4gZWRnZXM7CgogICAgdmVjdG9yPHZlY3RvcjxpbnQ+PiBhZGoocG9kcyArIDEpOwoKICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZWRnZXM7IGkrKykKICAgIHsKICAgICAgICBpbnQgdSwgdjsKICAgICAgICBjaW4gPj4gdSA+PiB2OwoKICAgICAgICBhZGpbdV0ucHVzaF9iYWNrKHYpOwogICAgICAgIGFkalt2XS5wdXNoX2JhY2sodSk7CiAgICB9CgogICAgY29tcG9uZW50LmFzc2lnbihwb2RzICsgMSwgMCk7CiAgICBjb21wU2V0LnJlc2l6ZShwb2RzICsgMSk7CgogICAgdmVjdG9yPGJvb2w+IHZpcyhwb2RzICsgMSwgZmFsc2UpOwoKICAgIC8vIEZpbmQgY29ubmVjdGVkIGNvbXBvbmVudHMKICAgIGZvciAoaW50IGkgPSAxOyBpIDw9IHBvZHM7IGkrKykKICAgIHsKICAgICAgICBpZiAoIXZpc1tpXSkKICAgICAgICB7CiAgICAgICAgICAgIGNvbXBvbmVudENudCsrOwogICAgICAgICAgICBkZnMoaSwgYWRqLCB2aXMpOwogICAgICAgIH0KICAgIH0KCiAgICBpbnQgcTsKICAgIGNpbiA+PiBxOwoKICAgIHdoaWxlIChxLS0pCiAgICB7CiAgICAgICAgaW50IHR5cGUsIHg7CiAgICAgICAgY2luID4+IHR5cGUgPj4geDsKCiAgICAgICAgaW50IGlkID0gY29tcG9uZW50W3hdOwoKICAgICAgICBpZiAodHlwZSA9PSAxKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKGNvbXBTZXRbaWRdLmVtcHR5KCkpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGNvdXQgPDwgLTEgPDwgIlxuIjsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlIGlmIChjb21wU2V0W2lkXS5jb3VudCh4KSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgY291dCA8PCB4IDw8ICJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBjb3V0IDw8ICpjb21wU2V0W2lkXS5iZWdpbigpIDw8ICJcbiI7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgIHsKICAgICAgICAgICAgY29tcFNldFtpZF0uZXJhc2UoeCk7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9