#line 2 "/Users/2P/Desktop/ramstream/library/template/template.hpp" /** * @brief Header */ #include // #include // #include // #include // #include // #include // #include // #include // #include // #include // #include // #include // #include // #include // #include // #include // #include using namespace std; typedef long long ll; #define overload4(_1, _2, _3, _4, name, ...) name #define rep1(i, n) for (int i = 0; i < int(n); ++i) #define rep2(i, s, n) for (int i = int(s); i < int(n); ++i) #define rep3(i, s, n, d) for(int i = int(s); i < int(n); i+=d) #define rep(...) overload4(__VA_ARGS__,rep3,rep2,rep1)(__VA_ARGS__) #define all(x) (x).begin(),(x).end() #define rall(x) (x).rbegin(),(x).rend() #define fir first #define sec second #define pb push_back #define em emplace_back #define mk make_pair #define SUM(a) accumulate(all(a),0LL) #define MIN(a) *min_element(all(a)) #define MAX(a) *max_element(all(a)) template void input(T&... a){(cin >> ... >> a);} #define INT(...) int __VA_ARGS__;input(__VA_ARGS__) #define LL(...) ll __VA_ARGS__;input(__VA_ARGS__) #define STR(...) string __VA_ARGS__;input(__VA_ARGS__) #define DBL(...) double __VA_ARGS__;input(__VA_ARGS__) void Yes(bool iSizIs=true) {if(iSizIs){cout<<"Yes"< void OUT(T x) {cout << (x) << endl;} template bool chmin(T &a, T b) {if (a > b) {a = b;return true;}return false;} template bool chmax(T &a, T b) {if (a < b) {a = b;return true;}return false;} ll POW(ll a, ll n, ll mod) { if (n == 0) return 1; if (n == 1) return a % mod; ll ret = POW(a, n / 2, mod) % mod; (ret *= ret) %= mod; if (n % 2 == 1) { (ret *= a) %= mod; } return ret; } const int inf = INT_MAX / 2; const ll infl = 1LL << 60; using vi = vector; using vvi = vector; using vl = vector; using vvl = vector; using vd = vector; using vvd = vector; using vs = vector; using vvs = vector; using vb = vector; using vvb = vector; using pii = pair; using pll = pair; using mii = map; using mll = map; #include using namespace atcoder; #line 2 "sol.cpp" int main() { INT(n, q); dsu uni(n); set s; rep(i, n) s.insert(i); rep(qi, q) { int t; cin >> t; if(t == 1) { INT(u, v); u--, v--; s.erase(uni.leader(u)); s.erase(uni.leader(v)); uni.merge(u, v); s.insert(uni.leader(u)); } else { INT(v); v--; if(s.size() == 1) { cout << -1 << endl; } else { for(auto x : s) { if(!uni.same(x, v)) { cout << x + 1 << endl; break; } } } } } }