#include <cstdio>
#include <vector>

using namespace std;

int N,M,daddy[100005];
pair<int,int> cuplaje[400005];
int nrc;

int whos_ur_daddy(int k)
{
    if(daddy[k] != k)
        daddy[k] = whos_ur_daddy(daddy[k]);
    return daddy[k];
}

void couple(int a,int b)
{
    daddy[daddy[a]] = daddy[b];
    cuplaje[++nrc]=make_pair(a,b);
}

void decuplaj(int a)
{
    int x = cuplaje[a].first;
    daddy[x] = x;
    for(int i = 1; i <= N; ++i)
        whos_ur_daddy(i);
}

int main()
{
    //freopen("graphwars.in","r" ,stdin);
    //freopen("graphwars.out","w" ,stdout);
    scanf("%d%d",&N,&M);
    for(int i = 1; i <= N; ++i) daddy[i] = i;

    int caz,a,b;

    while(M--)
    {
        scanf("%d",&caz);
        if(caz == 1)
        {
            scanf("%d%d",&a,&b);
            couple(a,b);
        }
        else
            if(caz == 3)
            {
                scanf("%d%d",&a,&b);
                if(whos_ur_daddy(a) == whos_ur_daddy(b))
                    printf("NO\n");
                else
                    printf("YES\n");
            }
            else
            {
                scanf("%d",&a);
                decuplaj(a);
            }
    }

    return 0;
}