#include<algorithm> #include<iostream> #include<cstring> #include<cstdlib> #include<cstdio> #define inf 0x7fffffff using namespace std; inline int read(){ int x=0,f=1;char ch=getchar(); while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();} while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();} return x*f; } const int maxn=1000001; int n,m,x,y,v[maxn],l[maxn],r[maxn],d[maxn],fa[maxn]; bool die[maxn]; char ch[10]; inline int find(int x){return fa[x]==x?x:fa[x]=find(fa[x]);} inline int Merge(int x,int y){ if(!x)return y; if(!y)return x; if(v[x]>v[y])swap(x,y); r[x]=Merge(r[x],y); if(d[l[x]]<d[r[x]])swap(l[x],r[x]); d[x]=d[r[x]]+1; return x; } int main(){ n=read(); for(int i=1;i<=n;i++) v[i]=read(),fa[i]=i; m=read(); for(int i=1;i<=m;i++){ scanf("%s",ch); if(ch[0]=='M'){ x=read();y=read(); if(die[x]||die[y])continue; int p=find(x),q=find(y); if(p!=q){int t=Merge(p,q);fa[p]=fa[q]=t;} } else{ x=read(); if(die[x])puts("0"); else{ int p=find(x);die[p]=1; printf("%d\n",v[p]); fa[p]=Merge(l[p],r[p]); fa[fa[p]]=fa[p]; } } } return 0; }