int rt[M];
int cnt[M<<5];
int ch[M<<5][2];
int pre[M];
int tot=0;
int n,m;
void ins(int a,int b,int t,int x){if(t<0)return;int i = (x>>t)&1;ch[a][!i]=ch[b][!i];ch[a][i]=++tot;cnt[ch[a][i]]=cnt[ch[b][i]]+1;ins(ch[a][i],ch[b][i],t-1,x);
}
int qu(int a,int b,int t,int x){if(t<0)return 0;int i =(x>>t)&1;if(cnt[ch[b][!i]]>cnt[ch[a][!i]]){return (1ll<<t)+qu(ch[a][!i],ch[b][!i],t-1,x);}else{return qu(ch[a][i],ch[b][i],t-1,x);}
}
void solve(){cin>>n>>m;rt[0]=++tot;ins(rt[0],0,25,0);for(int i=1;i<=n;i++){int x;cin>>x;pre[i]=pre[i-1]^x;rt[i]=++tot;ins(rt[i],rt[i-1],25,pre[i]);}rep(i,1,m){char o;cin>>o;if(o=='A'){n++;int x;cin>>x;pre[n]=pre[n-1]^x;rt[n]=++tot;ins(rt[n],rt[n-1],25,pre[n]);}else{int l,r,k;cin>>l>>r>>k;l--;r--;if(i==0)cout<<qu(0,rt[r],25,k^pre[n]);else cout<<qu(rt[l-1],rt[r],25,k^pre[n]);cout<<endl;}}}