#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int N=100050;
int n,k;
int kz[10005];
int a[N];
int dyk[N];
int ls[10005];
int kj;
char pd;
int zk,yk;
int da;
int lflag;
void gai(int gs,int gc){
kj=dyk[gs];
if(a[gs]<0){
kz[kj]=kz[kj]*-1;
}else if(a[gs]==0){
ls[kj]--;
}
if(gc<0){
kz[kj]=kz[kj]*-1;
}else if(gc==0){
ls[kj]++;
}
a[gs]=gc;
return ;
}
void cha(int l,int r){
zk=dyk[l];yk=dyk[r];
da=1;
if(zk==yk){
for(int i=l;i<=r;i++){
if(a[i]<0){
da*=-1;
}else if(a[i]==0){
da=0;
break;
}
}
}else{
for(int i=l;i<(zk+1)*100;i++){
if(a[i]<0){
da*=-1;
}else if(a[i]==0){
da=0;
break;
}
}
if(da!=0){
for(int i=zk+1;i<yk;i++){
if(ls[i]>0){
da=0;
break;
}else{
da*=kz[i];
}
}
}
if(da!=0){
for(int i=yk*100;i<=r;i++){
if(a[i]<0){
da*=-1;
}else if(a[i]==0){
da=0;
break;
}
}
}
}
return ;
}
int l,v,r;
int main(){
//freopen("inter.in","r",stdin);
//freopen("inter.out","w",stdout);
while(cin>>n>>k){
memset(kz,1,sizeof(kz));
for(int i=1;i<=n;i++){
cin>>a[i];
}
for(int i=1;i<=n;i++){
kj=i/100;
dyk[i]=kj;
if(a[i]<0){
kz[kj]*=-1;
}else if(a[i]==0){
ls[kj]++;
}
}
for(int i=1;i<=k;i++){
cin>>pd;
if(pd=='C'){
scanf("%d%d",&l,&v);
gai(l,v);
}else{
scanf("%d%d",&l,&r);
cha(l,r);
if(da==0){
cout<<"0";
}else if(da<0){
cout<<"-";
}else{
cout<<"+";
}
}
}
cout<<endl;
}
return 0;
}