#include<bits/stdc++.h>
using namespace std;
const int N=100010;
int p[N],sizee[N];
int findd(int x){//路径压缩
if(p[x]!=x){
p[x]=findd(p[x]);
}
return p[x];
}
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++){
p[i]=i;
sizee[i]=1;
}
for(int i=1;i<=m;i++){
string s;
int a,b;
cin>>s;
if(s=="C"){
cin>>a>>b;
if(findd(a)==findd(b)){
continue;
}
sizee[findd(b)]=sizee[findd(b)]+sizee[findd(a)];//与下一行的位置不能交换
p[findd(a)]=findd(b);
}
else if(s=="Q1"){
cin>>a>>b;
if(findd(a)==findd(b)){
cout<<"Yes\n";
}
else{
cout<<"No\n";
}
}
else{
cin>>a;
cout<<sizee[findd(a)]<<"\n";
}
}
return 0;
}