1 #include<cstdio>
2 #include<iostream>
3 #define maxn 10010
4 #define maxm 200020
5 int f[maxn];
6 int n,m;
7 inline int find(int x)
8 {
9 if(x!=f[x]) f[x]=find(f[x]);
10 return f[x];
11 }
12 inline void merge1(int u,int v)
13 {
14 int r1=find(u);
15 int r2=find(v);
16 if(r1!=r2)
17 {
18 f[r2]=r1;
19 }
20 return;
21 }
22 inline bool merge2(int u,int v)
23 {
24 int r1=find(u);
25 int r2=find(v);
26 if(r1!=r2) return false;
27 return true;
28 }
29 using namespace std;
30 int main()
31 {
32 scanf("%d%d",&n,&m);
33 for(int i=1;i<n;i++) f[i]=i;
34 int pd,x,y;
35 for(int i=1;i<=m;i++)
36 {
37 scanf("%d",&pd);
38 if(pd==1)
39 {
40 scanf("%d%d",&x,&y);
41 merge1(x,y);
42 }
43 else
44 {
45 scanf("%d%d",&x,&y);
46 if(merge2(x,y)==true) cout<<"Y"<<endl;
47 else cout<<"N"<<endl;
48 }
49 }
50 return 0;
51 }