/*
ZADATAK: atomi
JEZIK: c++
*/

// Atomi, SIO 2007
// Autor zadatka : Rajko Nenadov

/*
resenje nosi 10 poena
vremenska slozenost : O(M * N)
prostorna slozenost : O(N)
*/

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

const long MaxN = 1000005;

long n, m;
bool postoji[MaxN];

FILE *fin, *fout;

int main(){
    fin=fopen("atomi.in","r");
    fout=fopen("atomi.out","w");

    memset(postoji,0,sizeof(postoji));
    fscanf(fin,"%ld %ld",&n,&m);
    long op,x,a,b;

    for (long k=0; k<m; k++){
        fscanf(fin,"%ld",&op);
        if (op == 0){
            fscanf(fin,"%ld",&x);
            postoji[x]=false;
        }
        else if (op == 1){
            fscanf(fin,"%ld",&x);
            postoji[x]=true;
        }
        else{
            fscanf(fin,"%ld %ld",&a,&b);

            long brojac=0, best=0;
            for (long i=a; i<=b; i++){
                if (postoji[i]) brojac++;
                else{
                    best=max(best,brojac);
                    brojac=0;
                }
            }
            best=max(best,brojac);
            fprintf(fout,"%ld\n",best);
        }
    }

    fclose(fin); fclose(fout);
    return 0;
}

