/*
TASK:bands
LANG:C
*/

#include<stdio.h>
 struct inf{
  int i,j;
  char com,col;
 }e[100002];
 
 int used[20004];
 
 int n,m,br=0;
 
// void init();
 
 void answer(int t);
 
 int main()
 {
  int k,t;
  char c;
  scanf("%d %d",&n,&m);
  for(k=0;k<m;k++)
  {
   scanf("%c",&c);
   scanf("%c",&c);
   if(c=='1'){
              e[br].com=c; 
              scanf("%d %d %c",&e[br].i,&e[br].j,&e[br].col); 
              if(e[br].col!='0'){
                         for(t=e[br].i;t<e[br].j;t++)
                          used[t]++;
                        }  
              br++;
             }
   else {
    if(c=='2'){
               e[br].com=c; 
               scanf("%d %d",&e[br].i,&e[br].j); 
               for(t=e[br].i;t<e[br].j;t++)
                used[t]--;
               br++; 
              }
     else {scanf("%d",&t); answer(t);} 
   }              
  }
  return 0;
 }
 
 void answer(int t)
 {
  int k=br-1,s=0;
  if(!used[t]){printf("0\n"); return;}
  for(;k>=0;k--)
   if(e[k].i<=t && e[k].j>t){
    if(e[k].com=='1'){
     if(e[k].i<=t && e[k].j>t){
      if(s==0){printf("%c\n",e[k].col); return;}
       else s--;
     }
    }
    else s++;
   }  
  printf("0\n");
  return;
 }
 
 
