#include<iostream>
using namespace std;
#define N 20010
int n,m,fa[N],x,y,op;
int findFa(int v){return fa[v]==v?v:fa[v]=findFa(fa[v]);}
void unionn(int v,int u){fa[v]=u;}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)fa[i]=i;
for(int i=1;i<=m;i++){
cin>>op>>x>>y;
int fx=findFa(x),fy=findFa(y);
if(op==1){if(fx!=fy){unionn(fx,fy);}}
else {
if(fx==fy)cout<<"Y\n";
else cout<<"N\n";
}
}
}
struct union_Find_Sets{
int fa[N];
int findFa(int v){return fa[v]==v?v:fa[v]=findFa(fa[v]);}
void unionn(int v,int u){fa[v]=u;}
void init(int size){for(int i=1;i<=n;i++)fa[i]=i;}
};