int main(){
	redirect();
	while(cin>>N>>K){
		for(int i=0;i<N;i++)
			cin>>v[i];
		st.buildTree();
		for(int i=0;i<K;i++){
			cin>>ch>>a>>b;
			if(ch=='C'){
				v[a-1]=b;
				st.update(1,0,N-1,a-1);
			}
			else{
				cout<<st.query(a-1,b-1);
			}
		}
		cout<<endl;
	}
	return 0;
}
int main(){
	redirect();
	while(cin>>N){
		if(!N)
			break;
		cin>>Q;
		ori.clear();
		freq.clear();
		for(int i=0;i<N;i++){
			cin>>t;
			ori.push_back(t);
		}
		translateToFreq();
		st.buildTree();
		for(int j=0;j<Q;j++){
			cin>>a>>b;
			cout<<st.query(a-1,b-1)<<endl;
		}
	}
	return 0;
}