#include <bits/stdc++.h>
#include <atcoder/dsu>
using namespace std;

int main() {
    cin.tie(0)->sync_with_stdio(0);

    int N, Q;
    cin >> N >> Q;
    atcoder::dsu uf(N);
    map<int, vector<int>> groups;
    for(int i = 0; i < N; i++) groups[i] = {i};

    while(Q--) {
        int t;
        cin >> t;
        if(t == 1) {
            int u, v;
            cin >> u >> v;
            u = uf.leader(u - 1);
            v = uf.leader(v - 1);
            if(u == v) continue;
            if(uf.merge(u, v) == v) swap(u, v);
            vector<int>& U = groups[u], & V = groups[v];
            U.insert(U.end(), V.begin(), V.end());
            groups.erase(v);
        }
        else {
            int u;
            cin >> u;
            u = uf.leader(u - 1);
            if(uf.size(u) == N) {
                cout << "-1\n";
                continue;
            }
            auto p = groups.find(u);
            if(++p == groups.end()) p = groups.begin();
            cout << p->second[0] + 1 << '\n';
        }
    }
}