#include <bits/stdc++.h>
#define N 133333
#define KP 366
#define M 133333
#define K 1000000
using namespace std;
int bi[N+1];
class Query
{
public:
int l,r,ord,id;
}qq[M+1];
bool operator<(Query L,Query R)
{
if (bi[L.l]!=bi[R.l]) return bi[L.l]<bi[R.l];
if (bi[L.r]!=bi[R.r]) return bi[L.r]<bi[R.r];
return L.ord<R.ord;
}
class Modify
{
public:
int x,c;
}mm[M+1];
int a[N+1],n,m,m1,m2,kp,tot;
int cnt[K+1],res[M+1];
void madd(int x)
{
if (!cnt[x]) tot++;
cnt[x]++;
}
void mdel(int x)
{
cnt[x]--;
if (!cnt[x]) tot--;
}
void mspend(int x1,int x2)
{
if (mm[x2].x>=qq[x1].l && mm[x2].x<=qq[x1].r)
mdel(a[mm[x2].x]),madd(mm[x2].c);
swap(a[mm[x2].x],mm[x2].c);
}
void HeadMos(int l,int r,int ord)
{
int i;
for(i=1;i<=m1;i++)
{
while(ord<qq[i].ord) mspend(i,++ord);
while(ord>qq[i].ord) mspend(i,ord--);
while(r<qq[i].r) madd(a[++r]);
while(r>qq[i].r) mdel(a[r--]);
while(l<qq[i].l) mdel(a[l++]);
while(l>qq[i].l) madd(a[--l]);
res[qq[i].id]=tot;
}
}
int main()
{
//ÊýÑÕÉ«
char opt;
int x,y,i;
scanf("%d",&n);
kp=ceil(pow(n,2.0/3.0));
for(i=1;i<=n;i++)
{
scanf("%d",&a[i]);
bi[i]=(i-1)/kp+1;
}
scanf("%d",&m);
for(i=1;i<=m;i++)
{
while(opt=getchar())
if (opt=='Q' || opt=='R')
break;
scanf("%d%d",&x,&y);
if (opt=='Q')
qq[++m1]=(Query){x,y,m2,m1};
else if (opt=='R')
mm[++m2]=(Modify){x,y};
}
sort(qq+1,qq+m1+1);
HeadMos(1,0,0);
for(i=1;i<=m1;i++) printf("%d\n",res[i]);
}