else max := mid;
end;
writeln ( max );
end;
procedure dealS;
var
l , r , p , d : longint;
s : char;
begin
read ( s );
if s = 'Q' then begin
readln ( l , r , d );
queryL ( l , r , d );
end
else begin
readln ( p , d );
modifyL ( p , d );
end;
end;
procedure main;
var
i : longint;
begin
readln ( n , m );
totmin := maxlongint;
totmax := 0;
w := 0;
h := 0;
while 1 shl h < n do inc ( h );
buildL;
for i := 1 to n do begin
read ( data[i] );
if data[i] < totmin then
totmin := data[i];
if data[i] > totmax then
totmax := data[i];
insertL ( i );
end; readln;
for i := 1 to m do
dealS;
end;
begin
readln ( x );
for c := 1 to x do
main;
end.
end;
writeln ( max );
end;
procedure dealS;
var
l , r , p , d : longint;
s : char;
begin
read ( s );
if s = 'Q' then begin
readln ( l , r , d );
queryL ( l , r , d );
end
else begin
readln ( p , d );
modifyL ( p , d );
end;
end;
procedure main;
var
i : longint;
begin
readln ( n , m );
totmin := maxlongint;
totmax := 0;
w := 0;
h := 0;
while 1 shl h < n do inc ( h );
buildL;
for i := 1 to n do begin
read ( data[i] );
if data[i] < totmin then
totmin := data[i];
if data[i] > totmax then
totmax := data[i];
insertL ( i );
end; readln;
for i := 1 to m do
dealS;
end;
begin
readln ( x );
for c := 1 to x do
main;
end.