#include #define int long long int #define endl '\n' #define loop(i, a, b) for (int i = a; i < b; i++) #define vi vector< int > #define vpi vector< pair< int, int > > #define in(v) for (auto &i : v) cin >> i #define all(v) v.begin(), v.end() #define it(b) for(auto it=b.begin();it!=b.end();it++) const int MOD = 1000000007; using namespace std; const int N = 2*1e5 + 5; vector parent(N, 0), exp(N, 0), mi(N, 0), mx(N, 0); int find_set(int x){ if(parent[x] == x) return x; return parent[x] = find_set(parent[x]); } void unite_set(int x, int y){ int m = find_set(x); int n = find_set(y); if(m == n) { // mi[m] = min({mi[m], x, y}); // mx[m] = max({mx[m], x, y}); return; } // if(exp[m] > exp[n]){ // swap(m, n); // } parent[m] = n; // mi[n] = min({mi[n], mi[m], x, y}); // mx[n] = max({mx[n], mx[m], x, y}); // exp[n] += exp[m]; return; } void shuruHoJaa() { int n, q; cin >> n >> q; for (int i = 0; i < N; i++){ parent[i] = mi[i] = mx[i] = i; } string op; int u, v; for (int i = 0; i < q; i++){ cin >> op; if(op[0] == 'u') { cin >> u >> v; unite_set(u, v); } else { cin >> u >> v; u = find_set(u); v = find_set(v); cout << (u==v? "YES":"NO") << endl; } } return; } signed main() { #ifndef ONLINE_JUDGE freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif std::ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int t = 1; // cin >> t; while(t--){ shuruHoJaa(); if(t) cout<