#include<bits/stdc++.h>
#define ll long long
#define X first
#define Y second
#define vi vector<ll>
#define ii pair<ll,ll>
#define vii vector<ii>
const long long MAX = 2e5 + 5;
const long long mod = 1e9 + 7;
const long long INF = 1e9;
using namespace std;
ll st[MAX << 2];
ll a[MAX];
ll n,q;
void buildtree(ll id,ll l,ll r){
if(l == r){
st[id] = a[l];
return;
}
ll m = l + r >> 1;
buildtree(id << 1,l,m);
buildtree(id << 1 | 1,m + 1,r);
st[id] = st[id << 1] + st[id << 1 | 1];
}
void update(ll id,ll l,ll r,ll u,ll v){
if(u > r || u < l)return;
if(l == r){
if(u == l)st[id] = v;
return;
}
ll m = l + r >> 1;
update(id << 1,l,m,u,v);
update(id << 1 | 1,m + 1,r,u,v);
st[id] = st[id << 1] + st[id << 1 | 1];
}
ll get(ll id,ll l,ll r,ll u,ll v){
if(u > r || v < l)return 0;
if(u <= l && r <= v)return st[id];
ll m = l + r >> 1;
return get(id << 1,l,m,u,v) + get(id << 1 | 1,m + 1,r,u,v);
}
ll cs ;
ll xort = 0;
ll xort2 = 0;
signed main(){
cin>>n>>q;
cs = n + 1;
for(ll i = 1;i <= n;i++)cin>>a[i];
buildtree(1,1,MAX - 1);
for(ll i = 1,c,v;i <= q;i++){
cin>>c>>v;
//cout<<i<<":\n";
//cout<<get(1,1,MAX - 1,1,MAX - 1)<<",";
if(c == 1){
a[cs] = v;
update(1,1,MAX - 1,cs++,v);
//for(ll i = 1;i <= cs;i++)cout<<a[i]<<" ";
//cout<<"\n";
}else if(c == 2){
a[v] = 0;
update(1,1,MAX - 1,v,0);
}else
if(c == 3){
//ll sum = 0;
xort = v;
xort2 = v;
for(ll i = 1;i < cs;i++){
//cout<<(a[i]^xort)<<" = ";
//sum += a[i] ^ xort;
update(1,1,MAX - 1,i,a[i] ^ xort);
a[i] ^= xort;
}
//cout<<sum<<"\n";
//continue;
}
//for(ll i = 1;i < cs;i++)cout<<a[i]<<" ";
//cout<<"\n";
cout<<(get(1,1,MAX - 1,1,MAX - 1))<<"\n";
}
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCiNkZWZpbmUgbGwgbG9uZyBsb25nCiNkZWZpbmUgWCBmaXJzdAojZGVmaW5lIFkgc2Vjb25kCgojZGVmaW5lIHZpIHZlY3RvcjxsbD4KI2RlZmluZSBpaSBwYWlyPGxsLGxsPgojZGVmaW5lIHZpaSB2ZWN0b3I8aWk+Cgpjb25zdCBsb25nIGxvbmcgTUFYID0gMmU1ICsgNTsKY29uc3QgbG9uZyBsb25nIG1vZCA9IDFlOSArIDc7CmNvbnN0IGxvbmcgbG9uZyBJTkYgPSAxZTk7Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKbGwgc3RbTUFYIDw8IDJdOwpsbCBhW01BWF07CmxsIG4scTsKCnZvaWQgYnVpbGR0cmVlKGxsIGlkLGxsIGwsbGwgcil7CglpZihsID09IHIpewoJCXN0W2lkXSA9IGFbbF07CgkJcmV0dXJuOwoJfQoJbGwgbSA9IGwgKyByID4+IDE7CglidWlsZHRyZWUoaWQgPDwgMSxsLG0pOwoJYnVpbGR0cmVlKGlkIDw8IDEgfCAxLG0gKyAxLHIpOwoJCglzdFtpZF0gPSBzdFtpZCA8PCAxXSArIHN0W2lkIDw8IDEgfCAxXTsKfQp2b2lkIHVwZGF0ZShsbCBpZCxsbCBsLGxsIHIsbGwgdSxsbCB2KXsKCWlmKHUgPiByIHx8IHUgPCBsKXJldHVybjsKCWlmKGwgPT0gcil7CgkJaWYodSA9PSBsKXN0W2lkXSA9IHY7CgkJcmV0dXJuOwoJfQoJbGwgbSA9IGwgKyByID4+IDE7Cgl1cGRhdGUoaWQgPDwgMSxsLG0sdSx2KTsKCXVwZGF0ZShpZCA8PCAxIHwgMSxtICsgMSxyLHUsdik7CgkKCXN0W2lkXSA9IHN0W2lkIDw8IDFdICsgc3RbaWQgPDwgMSB8IDFdOwp9CmxsIGdldChsbCBpZCxsbCBsLGxsIHIsbGwgdSxsbCB2KXsKCWlmKHUgPiByIHx8IHYgPCBsKXJldHVybiAwOwoJaWYodSA8PSBsICYmIHIgPD0gdilyZXR1cm4gc3RbaWRdOwoJCglsbCBtID0gbCArIHIgPj4gMTsKCXJldHVybiBnZXQoaWQgPDwgMSxsLG0sdSx2KSArIGdldChpZCA8PCAxIHwgMSxtICsgMSxyLHUsdik7Cn0KCmxsIGNzIDsKbGwgeG9ydCA9IDA7CmxsIHhvcnQyID0gMDsKc2lnbmVkIG1haW4oKXsKCWNpbj4+bj4+cTsKCWNzID0gbiArIDE7Cglmb3IobGwgaSA9IDE7aSA8PSBuO2krKyljaW4+PmFbaV07CglidWlsZHRyZWUoMSwxLE1BWCAtIDEpOwoJCglmb3IobGwgaSA9IDEsYyx2O2kgPD0gcTtpKyspewoJCWNpbj4+Yz4+djsKCQkKCQkvL2NvdXQ8PGk8PCI6XG4iOwoJCS8vY291dDw8Z2V0KDEsMSxNQVggLSAxLDEsTUFYIC0gMSk8PCIsIjsKCQlpZihjID09IDEpewoJCQlhW2NzXSA9IHY7CgkJCXVwZGF0ZSgxLDEsTUFYIC0gMSxjcysrLHYpOwoJCQkvL2ZvcihsbCBpID0gMTtpIDw9IGNzO2krKyljb3V0PDxhW2ldPDwiICI7CgkJCS8vY291dDw8IlxuIjsKCQl9ZWxzZSBpZihjID09IDIpewoJCQlhW3ZdID0gMDsKCQkJdXBkYXRlKDEsMSxNQVggLSAxLHYsMCk7CgkJfWVsc2UgCgkJaWYoYyA9PSAzKXsKCQkJLy9sbCBzdW0gPSAwOwoJCQl4b3J0ID0gdjsKCQkJeG9ydDIgPSB2OwoJCQlmb3IobGwgaSA9IDE7aSA8IGNzO2krKyl7CgkJCQkvL2NvdXQ8PChhW2ldXnhvcnQpPDwiID0gIjsKCQkJCQoJCQkJLy9zdW0gKz0gYVtpXSBeIHhvcnQ7CgkJCQl1cGRhdGUoMSwxLE1BWCAtIDEsaSxhW2ldIF4geG9ydCk7CgkJCQlhW2ldIF49IHhvcnQ7CgkJCX0KCQkJLy9jb3V0PDxzdW08PCJcbiI7CgkJCS8vY29udGludWU7CgkJfQoJCQoJCS8vZm9yKGxsIGkgPSAxO2kgPCBjcztpKyspY291dDw8YVtpXTw8IiAiOwoJCS8vY291dDw8IlxuIjsKCQljb3V0PDwoZ2V0KDEsMSxNQVggLSAxLDEsTUFYIC0gMSkpPDwiXG4iOwoJCQoJfQp9