/*
TASK:bands
LANG:C++
*/
#include<iostream>
#include<vector>
using namespace std;

class ots {
      public: int j,c,o;
      ots(int o1,int j1,int c1){o=o1;j=j1;c=c1;}
      };

int n,m;
int cnt;
vector<vector<ots> > a;

int main()
{
    cin>>n>>m;
    a.resize(n+1);
    int i,f,x,y,c,j;
    int maxj;
    for(i=0;i<m;i++)
    { 
           cin>>f;
           if(f==1)
           {
                   cin>>x>>y>>c;
                   a[x].push_back(*(new ots(cnt++,y,c)));
           }      
           else if(f==2)
           {
                cin>>x>>y;
                maxj=-1;
                for(j=x;j<=y;j++)
                {
                  if(a[j].size()>0 && 
                      (maxj<0  || 
                      (a[j][a[j].size()-1].o) > (a[maxj][a[maxj].size()-1].o))
                  )maxj=j;
                }
                if(maxj>=0)
                    a[maxj].pop_back();
            } 
           else 
           {
                maxj=-1;
                cin>>x;
                for(j=0;j<=x;j++)
                {
                    if(a[j].size()>0 && a[j][a[j].size()-1].j>=x && 
                        ( maxj<0 || 
                        (a[j][a[j].size()-1].o)>(a[maxj][a[maxj].size()-1].o))
                    )maxj=j;
                }
                if(maxj>=0)
                    cout<<a[maxj][a[maxj].size()-1].c<<endl;
                else cout<<"0"<<endl;
           }
    }
    return 0;
}
