#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;
}