{
TASK:bands
LANG:Pascal
}

type
 t=^band;
 band=record
  i,j,c:integer;
  n,p:t;
  end;

var
f,l:^band;
i,j,c,n,m,k,la:integer;


procedure add(i,j,c:integer);
var q:^band;
 begin
  if f=nil then
  begin new(f); l:=f; l^.i:=i; l^.j:=j; l^.c:=c; l^.n:=nil; l^.p:=nil; end
  else
  begin
  new(q);
  l^.n:=q;
  q^.n:=nil;
  q^.p:=l;
  q^.i:=i;
  q^.j:=j;
  q^.c:=c;
  l:=q;
  end;

 end;

 procedure un(i,j:integer);
 var
 pr,ne,q:^band;
 f:boolean;
  begin
  f:=false;
  q:=l;
  repeat

  if (q^.i=i)and(q^.j=j) then
  begin
  pr:=q^.p;
  ne:=q^.n;

 if pr<>nil then pr^.n:=ne;
 if ne<>nil then ne^.p:=pr;


  dispose(q);
  f:=true;
  end
  else
  q:=q^.p;

  until f;

  end;

procedure print(i:integer);
 var q:^band;
 f:boolean;
  begin
  f:=false;
   q:=l;

   repeat
    if (q^.i<=i)and(q^.j>i) then begin writeln(q^.c); f:=true; end
    else
    q:=q^.p;

   until (f)or(q=nil);

   if q=nil then writeln(0);
  end;



begin
{f:=nil;
l:=nil;}



read(n,m);

for k:=1 to m do
begin
read(la);
if la=1 then begin read(i,j,c); add(i,j,c); end
else
if la=2 then begin read(i,j); un(i,j); end
else
if la=3 then begin read(i); print(i); end;
end;


end.
