#include using namespace std; struct nod { int x; nod *u; }; struct list { int x,y; list *u; }; nod *a[100000]; list *prim= new list,*ultim,*r; void add(int x, int y) { nod *q = new nod; q->x = y; q->u = a[x]; a[x] = q; q->x = x; q->u = a[y]; a[y] = q; } void remove(int f) { int i; list *d,*q=prim; if (f==1) prim=prim->u; else { --f; for(i=1;iu; d=q->u; q->u=q->u->u; delete d; } } short caut(int x, int y) { list *q=prim; while(q!=ultim) { if (((q->xx>y))||((q->yy>y))) return 0; q=q->u; } return 1; } int main() { int n,m,i,f,x,y; short e; scanf("%d%d",&n,&m); ultim=prim; for(i=0;ix,&ultim->y); add(ultim->x,ultim->y); ultim->u=r; ultim=r; } else if (e==2) { scanf("%d",&f); remove(f); } else { scanf("%d%d",&x,&y); if (caut(x,y)==1) printf("YES\n"); else printf("NO\n"); } } return 0; }