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

struct adaugat{
    int x;
    int y;
};

int main(){
    vector<adaugat> az;
    int n,m,i,valCit,z=1,x,y,ok;
    cin>>n>>m;
    az.resize(n);
    for(i=1;i<=m;i++){
        cin>>valCit;
        switch (valCit) {
            case 1:
                cin>>x>>y;
                az[z].x = x;
                az[z].y = y;
                z++;
                break;
            case 2:
                cin>>x;
                az.erase(az.begin()+x);
                z--;
                break;
            case 3:
                cin>>x>>y;
                ok=0;
                for(i=1;i<=n;i++){
                    if(az[i].x==x&&az[i].y==y)
                        ok=1;
                }
                if(ok==0){
                cout<<"YES";
                }else{
                    cout<<"NO";
                }
            default:
                break;
        }
    }
    return 0;
}