#include #include #include using namespace std; int n, m; multiset set1, set2; vector > v; int main () { // freopen ("graph.in", "r", stdin); // freopen ("graph.out", "w", stdout); scanf ("%d %d", &n, &m); int i, t, x, y; for (i = 1; i <= m; i ++) { scanf ("%d", &t); if (t == 1) { scanf ("%d %d", &x, &y);//muchii identice if (x > y) x ^= y ^= x ^= y; v.push_back (make_pair (x, y)); set1.insert (x); set2.insert (-y); } if (t == 2) { scanf ("%d", &x); y = v[x].second; x = v[x].first; set1.erase (set1.find(x)); set2.erase (set2.find(-y)); } if (t == 3) { int i, j; scanf ("%d %d", &x, &y); i = *set1.begin(); j = *set2.begin(); j = -j; if (i < x || y < j) printf ("NO\n"); else printf ("YES\n"); } } return 0; }