#include<iostream>
#include<set>
#include<vector>
using namespace std;

int N,M,op,a,b;
vector<pair<int,int> > operations;
multiset<int> Q;

inline void addMuchie(int a,int b)
{
    operations.push_back(make_pair(a,b));
    Q.insert(a);
    Q.insert(b);
}

inline void deleteMuchie(int pos)
{
    Q.erase(Q.find(operations[pos-1].first));
    Q.erase(Q.find(operations[pos-1].second));
}

inline int query(int a,int b)
{
    if(Q.empty())
        return 1;

    if(a > *Q.begin())
        return 0;
    if(b < *Q.rbegin())
        return 0;

    return 1;
}

int main()
{
    cin >> N >> M;
    for(int i=1;i<=M;i++)
    {
        cin >> op;
        switch(op)
        {
            case 1 : cin >> a >> b;
                     addMuchie(a,b);
                     break ;
            case 2 : cin >> a;
                     deleteMuchie(a);
                     break;
            case 3 : cin >> a >> b; 
                     cout << (query(a,b) ? "YES\n" : "NO\n");
        }
    }
}