#include #include using namespace std; int main() { int n, q; cin >> n >> q; atcoder::dsu uf(n); multiset s; for (int i = 0; i < n; i++){ s.insert(i); } while (q--){ int t; cin >> t; if (t == 1){ int u, v; cin >> u >> v; u--; v--; s.erase(uf.leader(u)); s.erase(uf.leader(v)); uf.merge(u, v); s.insert(uf.leader(u)); s.insert(uf.leader(v)); } else { int u; cin >> u; u--; if ((*s.begin()) != uf.leader(u)){ cout << (*s.begin()) + 1 << endl; } else if ((*prev(s.end())) != uf.leader(u)) { cout << (*prev(s.end())) + 1 << endl; } else { cout << -1 << endl; } } } }