#include <iostream>
#include <queue>
#include <vector>
using namespace std;
const int maxn = 1e5 + 10;
const int INF = 1e9;
int root[maxn];
bool check(int A, int B) {
    return root[A] == root[B];
}
void unite(int A, int B) {
    int tmp = root[A];
    for(int i = 0; i < maxn; i++) {
        if(root[i] == tmp) {
            root[i] = root[B];
        }
    }
}
int main() {
    for(int i = 0; i < maxn; i++) {
        root[i] = i;
    }
    
    while(true) {
        string s;
        cin >> s;
        
        if(s == "union") {
            int a, b;
            cin >> a >> b;
            unite(a, b);
        }
        else {
            int a, b;
            cin >> a >> b;
            
            if(check(a, b)) {
                cout << "YES" << endl;
            }
            else {
                cout << "NO" << endl;
            }
            
        }
    }
    return 0;
}

