#include #include #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; } int query(int k) { int 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; }