{
TASK:bands
LANG:Pascal
}
type lines=Record
       x,y:Longint;
       c:Byte;
     End;
var n,m,i,j,cmd,p,x,y,c:Longint;
    a:Array[1..100001] of lines;
    found:boolean;
Begin
  ReadLn(n,m);
 For i:=1 to m do
 Begin
   Read(cmd);
  If cmd=1 then
    Begin
      p:=p+1;
      ReadLn(x,y,c);
      a[p].x:=x;
      a[p].y:=y-1;
      a[p].c:=c;
    End;
  If cmd=2 then
    Begin
      ReadLn(x,y);
     If p>0 then
      For j:=p downto 1 do
       If (a[j].x=x)and(a[j].y=y) then
        Begin
          a[j].x:=100001;
          a[j].y:=100001;
          a[j].c:=0;
          break;
        End;
    End;
  If cmd=3 then
    Begin
      ReadLn(x);
      found:=false;
     If p>0 then
      For j:=p downto 1 do
       if (a[j].x<=x)and(x<=a[j].y) then
       Begin
         WriteLn(a[j].c);
         found:=true;
         Break;
       End;
     If not found then WriteLn(0);
    End;
 End;
End.