//AcWing 836. 合并集合
//https://www.acwing.com/activity/content/problem/content/885/
#include<bits/stdc++.h>
using namespace std;
const int N = 1e5+10;
int n,k;
int p[N];
//返回根节点+压缩路径
int find(int x)
{
if(p[x]!=x) p[x]=find(p[x]);
return p[x];
}
int main()
{
cin>>n>>k;
//初始化状态数组
for(int i=1;i<=n;i++) p[i]=i;
while(k--){
char c;
int a,b;
cin>>c>>a>>b;
if(c == 'M'){
p[find(a)] = find(b);//集合合并操作
}
else if(c == 'Q'){
if(find(a) == find(b)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
}
return 0;
}