/*
TASK:bands
LANG:C++
*/
#include <iostream>
#include <vector>

using namespace std;

int n,m;
vector< pair<int ,int > > intervals;
vector<int> color;
int ff,ss;
bool found;

void del(int ff,int ss){
        bool tf=0;
        for(int i=intervals.size()-1;i>-1;i--)
            if(ff<=intervals[i].first && intervals[i].second>ss) ss=intervals[i].first;
            else if(intervals[i].first<ff && intervals[i].second<=ss) ff=intervals[i].first;
            else if(ff<=intervals[i].first && intervals[i].second<=ss && intervals[i].first!=-1){         
               ff=intervals[i].first;
               ss=intervals[i].second;
               intervals[i].first=-1;
               intervals[i].second=-1;
               color[i]=-1;
               tf=1;
               break;
            }
        found=tf;
}

int main(){
    cin>>n>>m;
    int a,b,c,d;
    for(int k=0;k<m;k++){
        cin>>a;
        if(a==1){
           cin>>b>>c>>d;    
           pair<int ,int > p;
           p=make_pair(min(b,c),max(b,c));
           intervals.push_back(p);
           color.push_back(d);
        }
        else if( a==2){
                cin>>b>>c;
                if(b>c) swap(b,c);
                for(int i=intervals.size()-1;i>-1;i--){
                    if(b<=intervals[i].first && intervals[i].second>c) c=intervals[i].first;
                    else if(intervals[i].first<b && intervals[i].second<=c) b=intervals[i].first;
                    else if(b<=intervals[i].first && intervals[i].second<=c){
                       ff=intervals[i].first;
                       int cur=intervals[i].second;
                       intervals[i].first=-1;
                       intervals[i].second=-1;
                       color[i]=-1;
                       found=1;
                       while(ff-b>0 && found==1) del(b,ff);
                       found=1;
                       ss=cur;
                       while(c-ss>0 && found==1) del(ss,c);
                       break;
                    }}
        }
        else if(a==3){
                cin>>b;
                bool tf=0;
                for(int i=intervals.size()-1;i>-1;i--)
                    if(b>=intervals[i].first && b+1<=intervals[i].second){
                       cout<<color[i]<<"\n";
                       tf=1;
                       break;
                    }
                if(!tf) cout<<0<<"\n";
        }
    }
    return 0;
}
