const
fi = '';
var
a : array[1..50000] of longint;
val,valmax,rem : array[1..200000] of longint;
n,k,m : longint;
procedure enter;
var
i,j,tmp : longint;
begin
n := 0;
readln(k,m);
i := 1;
for j := 1 to k do
begin
read(tmp);
a[i] := 1;
inc(i,tmp);
inc(n,tmp);
end;
readln;
end;
procedure init(s,l,r : longint);
var
mid : longint;
begin
if l = r then
begin
valmax[s] := 1;
exit;
end;
mid := (l + r) div 2;
init(2*s,l,mid);
init(2*s+1,mid+1,r);
valmax[s] := valmax[2*s] + valmax[2*s+1];
end;
procedure init2(s,l,r : longint);
var
mid : longint;
begin
if l = r then
begin
inc(val[s],a[l]);
exit;
end;
mid := (l + r) div 2;
init2(2*s,l,mid);
init2(2*s+1,mid+1,r);
val[s] := val[2*s] + val[2*s+1];
end;
procedure trans(s,l,r : longint);
var
mid : longint;
begin
if (s = 0) or (l = r) then exit;
mid := (l + r) div 2;
inc(val[2*s],rem[s]*(mid-l+1));
inc(val[2*s+1],rem[s]*(r-mid));
inc(rem[2*s],rem[s]);
inc(rem[2*s+1],rem[s]);
rem[s] := 0;
end;
procedure Jupdate(s,l,r,u,v : longint);
var
mid : longint;
begin
if (r < u) or (v < l) then exit;
if (u <= l) and (r <= v) then
begin
if val[s] = valmax[s] then
begin
dec(val[s],r-l+1);
dec(rem[s]);
exit;
end;
if val[s] = 0 then exit;
end;
trans(s,l,r);
mid := (l + r) div 2;
Jupdate(2*s,l,mid,u,v);
Jupdate(2*s+1,mid+1,r,u,v);
val[s] := val[2*s] + val[2*s+1];
end;
procedure Dupdate(s,l,r,u,v : longint);
var
mid : longint;
begin
if (r < u) or (v < l) then exit;
if (u <= l) and (r <= v) then
begin
if val[s] = 0 then
begin
inc(val[s],r-l+1);
inc(rem[s]);
exit;
end;
if val[s] = valmax[s] then exit;
end;
trans(s,l,r);
mid := (l + r) div 2;
Dupdate(2*s,l,mid,u,v);
Dupdate(2*s+1,mid+1,r,u,v);
val[s] := val[2*s] + val[2*s+1];
end;
procedure query(c : char; u,v : longint);
begin
if c = 'J' then Jupdate(1,1,n,u+1,v)
else Dupdate(1,1,n,u+1,v);
end;
procedure main;
var
i,u,v : longint;
c : char;
begin
init(1,1,n);
init2(1,1,n);
for i := 1 to m do
begin
read(c);
if c = 'C' then
begin
writeln(val[1]);
readln;
end
else
begin
readln(u,v);
query(c,u,v);
end;
end;
end;
begin
assign(input,fi);
reset(input);
enter;
main;
close(input);
end.
Y29uc3QKICBmaSA9ICcnOwp2YXIKICBhIDogYXJyYXlbMS4uNTAwMDBdIG9mIGxvbmdpbnQ7CiAgdmFsLHZhbG1heCxyZW0gOiBhcnJheVsxLi4yMDAwMDBdIG9mIGxvbmdpbnQ7CiAgbixrLG0gOiBsb25naW50OwoKCnByb2NlZHVyZSBlbnRlcjsKICB2YXIKICAgIGksaix0bXAgOiBsb25naW50OwogIGJlZ2luCiAgICBuIDo9IDA7CiAgICByZWFkbG4oayxtKTsKICAgIGkgOj0gMTsKICAgIGZvciBqIDo9IDEgdG8gayBkbwogICAgICBiZWdpbgogICAgICAgIHJlYWQodG1wKTsKICAgICAgICBhW2ldIDo9IDE7CiAgICAgICAgaW5jKGksdG1wKTsKICAgICAgICBpbmMobix0bXApOwogICAgICBlbmQ7CiAgICByZWFkbG47CiAgZW5kOwoKcHJvY2VkdXJlIGluaXQocyxsLHIgOiBsb25naW50KTsKICB2YXIKICAgIG1pZCA6IGxvbmdpbnQ7CiAgYmVnaW4KICAgIGlmIGwgPSByIHRoZW4KICAgICAgYmVnaW4KICAgICAgICB2YWxtYXhbc10gOj0gMTsKICAgICAgICBleGl0OwogICAgICBlbmQ7CiAgICBtaWQgOj0gKGwgKyByKSBkaXYgMjsKICAgIGluaXQoMipzLGwsbWlkKTsKICAgIGluaXQoMipzKzEsbWlkKzEscik7CiAgICB2YWxtYXhbc10gOj0gdmFsbWF4WzIqc10gKyB2YWxtYXhbMipzKzFdOwogIGVuZDsKCnByb2NlZHVyZSBpbml0MihzLGwsciA6IGxvbmdpbnQpOwogIHZhcgogICAgbWlkIDogbG9uZ2ludDsKICBiZWdpbgogICAgaWYgbCA9IHIgdGhlbgogICAgICBiZWdpbgogICAgICAgIGluYyh2YWxbc10sYVtsXSk7CiAgICAgICAgZXhpdDsKICAgICAgZW5kOwogICAgbWlkIDo9IChsICsgcikgZGl2IDI7CiAgICBpbml0MigyKnMsbCxtaWQpOwogICAgaW5pdDIoMipzKzEsbWlkKzEscik7CiAgICB2YWxbc10gOj0gdmFsWzIqc10gKyB2YWxbMipzKzFdOwogIGVuZDsKCnByb2NlZHVyZSB0cmFucyhzLGwsciA6IGxvbmdpbnQpOwogIHZhcgogICAgbWlkIDogbG9uZ2ludDsKICBiZWdpbgogICAgaWYgKHMgPSAwKSBvciAobCA9IHIpIHRoZW4gZXhpdDsKICAgIG1pZCA6PSAobCArIHIpIGRpdiAyOwogICAgaW5jKHZhbFsyKnNdLHJlbVtzXSoobWlkLWwrMSkpOwogICAgaW5jKHZhbFsyKnMrMV0scmVtW3NdKihyLW1pZCkpOwogICAgaW5jKHJlbVsyKnNdLHJlbVtzXSk7CiAgICBpbmMocmVtWzIqcysxXSxyZW1bc10pOwogICAgcmVtW3NdIDo9IDA7CiAgZW5kOwoKcHJvY2VkdXJlIEp1cGRhdGUocyxsLHIsdSx2IDogbG9uZ2ludCk7CiAgdmFyCiAgICBtaWQgOiBsb25naW50OwogIGJlZ2luCiAgICBpZiAociA8IHUpIG9yICh2IDwgbCkgdGhlbiBleGl0OwogICAgaWYgKHUgPD0gbCkgYW5kIChyIDw9IHYpIHRoZW4KICAgICAgYmVnaW4KICAgICAgICBpZiB2YWxbc10gPSB2YWxtYXhbc10gdGhlbgogICAgICAgICAgYmVnaW4KICAgICAgICAgICAgZGVjKHZhbFtzXSxyLWwrMSk7CiAgICAgICAgICAgIGRlYyhyZW1bc10pOwogICAgICAgICAgICBleGl0OwogICAgICAgICAgZW5kOwogICAgICAgIGlmIHZhbFtzXSA9IDAgdGhlbiBleGl0OwogICAgICBlbmQ7CiAgICB0cmFucyhzLGwscik7CiAgICBtaWQgOj0gKGwgKyByKSBkaXYgMjsKICAgIEp1cGRhdGUoMipzLGwsbWlkLHUsdik7CiAgICBKdXBkYXRlKDIqcysxLG1pZCsxLHIsdSx2KTsKICAgIHZhbFtzXSA6PSB2YWxbMipzXSArIHZhbFsyKnMrMV07CiAgZW5kOwoKcHJvY2VkdXJlIER1cGRhdGUocyxsLHIsdSx2IDogbG9uZ2ludCk7CiAgdmFyCiAgICBtaWQgOiBsb25naW50OwogIGJlZ2luCiAgICBpZiAociA8IHUpIG9yICh2IDwgbCkgdGhlbiBleGl0OwogICAgaWYgKHUgPD0gbCkgYW5kIChyIDw9IHYpIHRoZW4KICAgICAgYmVnaW4KICAgICAgICBpZiB2YWxbc10gPSAwIHRoZW4KICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIGluYyh2YWxbc10sci1sKzEpOwogICAgICAgICAgICBpbmMocmVtW3NdKTsKICAgICAgICAgICAgZXhpdDsKICAgICAgICAgIGVuZDsKICAgICAgICBpZiB2YWxbc10gPSB2YWxtYXhbc10gdGhlbiBleGl0OwogICAgICBlbmQ7CiAgICB0cmFucyhzLGwscik7CiAgICBtaWQgOj0gKGwgKyByKSBkaXYgMjsKICAgIER1cGRhdGUoMipzLGwsbWlkLHUsdik7CiAgICBEdXBkYXRlKDIqcysxLG1pZCsxLHIsdSx2KTsKICAgIHZhbFtzXSA6PSB2YWxbMipzXSArIHZhbFsyKnMrMV07CiAgZW5kOwoKcHJvY2VkdXJlIHF1ZXJ5KGMgOiBjaGFyOyB1LHYgOiBsb25naW50KTsKICBiZWdpbgogICAgaWYgYyA9ICdKJyB0aGVuIEp1cGRhdGUoMSwxLG4sdSsxLHYpCiAgICBlbHNlIER1cGRhdGUoMSwxLG4sdSsxLHYpOwogIGVuZDsKCnByb2NlZHVyZSBtYWluOwogIHZhcgogICAgaSx1LHYgOiBsb25naW50OwogICAgYyA6IGNoYXI7CiAgYmVnaW4KICAgIGluaXQoMSwxLG4pOwogICAgaW5pdDIoMSwxLG4pOwogICAgZm9yIGkgOj0gMSB0byBtIGRvCiAgICAgIGJlZ2luCiAgICAgICAgcmVhZChjKTsKICAgICAgICBpZiBjID0gJ0MnIHRoZW4KICAgICAgICAgIGJlZ2luCiAgICAgICAgICAgIHdyaXRlbG4odmFsWzFdKTsKICAgICAgICAgICAgcmVhZGxuOwogICAgICAgICAgZW5kCiAgICAgICAgZWxzZQogICAgICAgICAgYmVnaW4KICAgICAgICAgICAgcmVhZGxuKHUsdik7CiAgICAgICAgICAgIHF1ZXJ5KGMsdSx2KTsKICAgICAgICAgIGVuZDsKICAgICAgZW5kOwogIGVuZDsKCgpiZWdpbgogIGFzc2lnbihpbnB1dCxmaSk7CiAgcmVzZXQoaW5wdXQpOwogIGVudGVyOwogIG1haW47CiAgY2xvc2UoaW5wdXQpOwplbmQuCg==