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

struct A{
    int b;
    int e;
    int c;
};

int m,n,i,cnt,j,g,h;
A asd[100001];

int main(){
    cin>>n>>m;
    while(m>0){
        scanf("%d",&i);
        if(i==1){
           cnt++;
           scanf("%d %d %d",&asd[cnt].b,&asd[cnt].e,&asd[cnt].c);
           asd[cnt].e--;
        }else if(i==2){
           scanf("%d %d",&g,&h);h--;
           for(j=cnt;j>=1;j--){
               if(g==asd[j].b&&h==asd[j].e){asd[j].c=-1;break;}
               if(g>=asd[j].b&&g<=asd[j].e) break;
               if(h>=asd[j].b&&h<=asd[j].e) break;
               if(g<=asd[j].b&&h>=asd[j].e) break;
           }
        }else {
           scanf("%d",&g);
           for(j=cnt;j>=1;j--){
               if(g>=asd[j].b&&g<=asd[j].e&&asd[j].c!=-1) {
                   printf("%d\n",asd[j].c);
                   break;
               }
           }
           if(j==0) printf("0\n");
        }
        m--;
    }
    return 0;
}

