#include<stdio.h>
#include<algorithm>
#define maxn 100005
using namespace std;

int n,m,u;
int aib[maxn],a[4*maxn],b[4*maxn];

void update(int k,int val){
    for(;k<=n;k+=(k^(k-1))&k)
       aib[k]+=val;
}

long long query(int k)
{
    long long sum=0;
    for(;k;k-=(k^(k-1))&k) sum+=aib[k];
    return sum;
}

int main()
{
    //freopen("graph.in","r",stdin);
    //freopen("graph.out","w",stdout);

    int t,x,y;
    scanf("%d%d",&n,&m);
    for(int it=1;it<=m;it++)
    {
        scanf("%d",&t);
        if(t==1)
        {
            scanf("%d%d",&x,&y);
            a[++u]=x; b[u]=y;
            update(x,1); update(y,1);
            continue;
        }
        if(t==2)
        {
            scanf("%d",&x);
            update(a[x],-1); update(b[x],-1);
            continue;
        }
        scanf("%d%d",&x,&y);
        if((query(x-1)+query(n)-query(y))!=0) printf("NO\n");
        else printf("YES\n");
    }

    fclose(stdin);
    fclose(stdout);
    return 0;
}