#include<bits/stdc++.h>
using namespace std;
#define Max 100005
struct node {
int v;
};
node tree[1<<18];
int n,m;
void build(int val,int l,int r,int p=1,int st=1,int ed=Max) {
if(st==ed) {
if(val>0) {
tree[p].v=1;
}else if(val==0) {
tree[p].v=0;
}else {
tree[p].v=-1;
}
return ;
}
int mid=(st+ed)/2;
if(l<=mid) {
build(val,l,r,p*2,st,mid);
}
if(r>mid) {
build(val,l,r,p*2+1,mid+1,ed);
}
tree[p].v=tree[p*2].v*tree[p*2+1].v;
}
int get_(int l,int r,int p=1,int st=1,int ed=Max) {
if(l<=st&&ed<=r) {
return tree[p].v;
}
int mid=(st+ed)/2;
int res=1;
if(l<=mid) {
res*=get_(l,r,p*2,st,mid);
}
if(r>mid) {
res*=get_(l,r,p*2+1,mid+1,ed);
}
return res;
}
int main() {
scanf("%d%d",&n,&m);
int el;
for(int i=0;i<n;i++) {
scanf("%d",&el);
build(el,i+1,i+1);
}
char a;
int l,r;
for(int i=0;i<m;i++) {
scanf(" %c",&a);
if(a=='C') {
scanf("%d%d",&l,&r);
build(r,l,l);
}else {
scanf("%d%d",&l,&r);
printf("%d\n",get_(l,r));
}
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNkZWZpbmUgTWF4IDEwMDAwNQoKc3RydWN0IG5vZGUgewogICAgaW50IHY7Cn07Cgpub2RlIHRyZWVbMTw8MThdOwppbnQgbixtOwoKdm9pZCBidWlsZChpbnQgdmFsLGludCBsLGludCByLGludCBwPTEsaW50IHN0PTEsaW50IGVkPU1heCkgewogICAgaWYoc3Q9PWVkKSB7CiAgICAgICAgaWYodmFsPjApIHsKICAgICAgICAgICAgdHJlZVtwXS52PTE7CiAgICAgICAgfWVsc2UgaWYodmFsPT0wKSB7CiAgICAgICAgICAgIHRyZWVbcF0udj0wOwogICAgICAgIH1lbHNlIHsKICAgICAgICAgICAgdHJlZVtwXS52PS0xOwogICAgICAgIH0KICAgICAgICByZXR1cm4gOwogICAgfQogICAgaW50IG1pZD0oc3QrZWQpLzI7CiAgICBpZihsPD1taWQpIHsKICAgICAgICBidWlsZCh2YWwsbCxyLHAqMixzdCxtaWQpOwogICAgfQogICAgaWYocj5taWQpIHsKICAgICAgICBidWlsZCh2YWwsbCxyLHAqMisxLG1pZCsxLGVkKTsKICAgIH0KICAgIHRyZWVbcF0udj10cmVlW3AqMl0udip0cmVlW3AqMisxXS52Owp9CgppbnQgZ2V0XyhpbnQgbCxpbnQgcixpbnQgcD0xLGludCBzdD0xLGludCBlZD1NYXgpIHsKICAgIGlmKGw8PXN0JiZlZDw9cikgewogICAgICAgIHJldHVybiB0cmVlW3BdLnY7CiAgICB9CiAgICBpbnQgbWlkPShzdCtlZCkvMjsKICAgIGludCByZXM9MTsKICAgIGlmKGw8PW1pZCkgewogICAgICAgIHJlcyo9Z2V0XyhsLHIscCoyLHN0LG1pZCk7CiAgICB9CiAgICBpZihyPm1pZCkgewogICAgICAgIHJlcyo9Z2V0XyhsLHIscCoyKzEsbWlkKzEsZWQpOwogICAgfQogICAgcmV0dXJuIHJlczsKfQoKaW50IG1haW4oKSB7CiAgICBzY2FuZigiJWQlZCIsJm4sJm0pOwoKICAgIGludCBlbDsKICAgIGZvcihpbnQgaT0wO2k8bjtpKyspIHsKICAgICAgICBzY2FuZigiJWQiLCZlbCk7CiAgICAgICAgYnVpbGQoZWwsaSsxLGkrMSk7CiAgICB9CgogICAgY2hhciBhOwogICAgaW50IGwscjsKICAgIGZvcihpbnQgaT0wO2k8bTtpKyspIHsKICAgICAgICBzY2FuZigiICVjIiwmYSk7CiAgICAgICAgaWYoYT09J0MnKSB7CiAgICAgICAgICAgIHNjYW5mKCIlZCVkIiwmbCwmcik7CiAgICAgICAgICAgIGJ1aWxkKHIsbCxsKTsKICAgICAgICB9ZWxzZSB7CiAgICAgICAgICAgIHNjYW5mKCIlZCVkIiwmbCwmcik7CiAgICAgICAgICAgIHByaW50ZigiJWRcbiIsZ2V0XyhsLHIpKTsKICAgICAgICB9CiAgICB9CgogICAgcmV0dXJuIDA7Cgp9Cg==