#include <iostream> #include <vector> using namespace std; struct elem { int ok,nod; }; vector <elem> v[100001]; elem el; pair <int,int> v2[400000]; int m,a,x,n,b,lv2,h,i,nn; bool ook; int main() { cin>>n>>m; for(; m; --m) { cin>>x; if (x==1) { cin>>a>>b; el.nod=b; el.ok=1; v[a].push_back(el); el.nod=a; v[b].push_back(el); v2[++lv2]=make_pair(a,b); } else if (x==2) { cin>>h; a=v2[h].first; b=v2[h].second; for(i=0; i<v[a].size(); ++i) { if (v[a][i].nod==b && v[a][i].ok) { v[a][i].ok=0; break; } } for(i=0; i<v[b].size(); ++i) { if (v[b][i].nod==a && v[b][i].ok) { v[b][i].ok=0; break; } } } else { cin>>a>>b; ook=1; for(nn=a; (nn<=b) && ook; ++nn) for (i=0; (i<v[nn].size()) && ook; ++i) if (v[nn][i].ok) if ((v[nn][i].nod<a) || (v[nn][i].nod>b)) { ook=0; } if(ook) cout<<"YES\n"; else cout<<"NO\n"; } } return 0; }