#include <iostream>
#include <bits/stdc++.h>
#define p pair<int,int>
#define f first
#define s second
typedef long long ll;
using namespace std;

ll M = 1e9 + 7;

class DSU{
	public:
	vector<ll>sz;
	vector<int>par;
   vector<int>blk; 
	DSU(int n){
		sz.resize(n+1,1ll);
		par.resize(n+1);
        blk.resize(n+1,0);
		for(int i = 0;i<=n;i++) par[i] = i;
	}
	int findPar(int u){
		if(par[u] == u) return u;
		return par[u] = findPar(par[u]);
	}
	
	void join(int u, int v){
		u = findPar(u); v = findPar(v);
		if(u == v) return;
		if(sz[u] > sz[v]) swap(u,v);
		sz[v] += sz[u];
        blk[v] += blk[u]; 
		par[u] = v;
		return;
	}
	void update(int u, bool t){
        u = findPar(u); 
        if(t) blk[u]++;
        else blk[u]--; 
   } 
   bool query(int u){
        u = findPar(u); 
        return (blk[u] > 0); 
   }
};
int main() {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	
	int n,q; cin>>n>>q;
	DSU dsu(n); 
    vector<bool> state(n+1,1); 
	while(q--){
       int t; cin>>t; 
        if(t==1) {
	    	int u,v;cin>>u>>v;
	     	dsu.join(u,v);
        } 
       else if(t == 2){
               int v; cin>>v; 
               dsu.update(v,state[v]); 
               state[v] = !state[v]; 
        } 
        else{
             int v; cin>>v; 
             if(dsu.query(v)) cout<<"Yes\n"; 
             else cout<<"No\n"; 
        }
       
	}
	
	
}