#include<bits/stdc++.h>
using namespace std;
const int maxn=1e5+10;
vector<int> vec;
int a,x,n,m,la,ans;
int main(){
scanf("%d%d",&n,&m);
for(int i=1;i<=n;i++) scanf("%d",&x),vec.insert(lower_bound(vec.begin(),vec.end(),x),x);
for(int i=1;i<=m;i++){
scanf("%d%d",&a,&x);
if(a==1)
vec.insert(lower_bound(vec.begin(),vec.end(),x),x);
else if(a==2)
vec.erase(lower_bound(vec.begin(),vec.end(),x));
else if(a==3)
ans^=lower_bound(vec.begin(),vec.end(),x)-vec.begin()+1;
else if(a==4)
ans^=vec.at(x-1);
else if(a==5)
ans^=vec.at(lower_bound(vec.begin(),vec.end(),x)-vec.begin()-1);
else if(a==6)
ans^=vec.at(upper_bound(vec.begin(),vec.end(),x)-vec.begin());
}
cout<<ans<<endl;
return 0;
}