{
TASK:bands
LANG:Pascal
}
program bands;
type mas=array[0..20000,1..100000]of byte;
type masint=array[0..100000,0..2] of integer;
type masbyte=array[0..100000,0..2] of byte;
var l:mas;
    wc:masbyte;
    ij:masint;
    b:boolean;
    q,k,n,m:integer;
begin
b:=false;
readln(n,m);
for k:=1 to m do
begin
read(wc[k,1]);
if wc[k,1]=1 then read(ij[k,1],ij[k,2],wc[k,2]);
if wc[k,1]=2 then b:=true; read(ij[k,1],ij[k,2]);
if wc[k,1]=3 then read(ij[k,1]);
end;
if b=false then
for k:=1 to m do
begin
if wc[k,1]=1 then for q:=ij[k,1] to ij[k,2] do l[q,1]:=wc[k,2];
if wc[k,1]=2 then wc[k,1]:=2;
if wc[k,1]=3 then writeln(l[ij[k,1],1]);
end;
end.
