#include<bits/stdc++.h>
using namespace std;
long long build(long long* tree,int i,int tl,int tr,int* a,int op)
{
if(tl==tr)
{
tree[i]=a[tl];
return tree[i];
}
int m=(tl+tr)/2;
//changed here
tree[2*i+1]=build(tree,2*i+1,tl,m,a,!op);
tree[2*i+2]=build(tree,2*i+2,m+1,tr,a,!op);
if(op==1)
tree[i] = tree[2*i+1]|tree[2*i+2];
else
tree[i] = tree[2*i+1]^tree[2*i+2];
return tree[i];
}
long long update(long long* tree,int i,int tl,int tr,int l,int* a,int op)
{
if(tl==tr && tl==l)
{
tree[i]=a[l];
return tree[i];
}
if(l<tl || l>tr)
{
return tree[i];
}
int m=(tl+tr)/2;
//changed here
tree[2*i+1]=update(tree,2*i+1,tl,m,l,a,!op);
tree[2*i+2]=update(tree,2*i+2,m+1,tr,l,a,!op);
if(op==1)
tree[i] = tree[2*i+1] | tree[2*i+2];
else
tree[i] = tree[2*i+1] ^ tree[2*i+2];
return tree[i];
}
int main()
{
int n,q; cin >> n>>q;
int s=pow(2,n);
int a[s];
for(int i=0;i<s;i++) cin >> a[i];
//height of tree
int x = (int)(ceil(log2(s)));
long long tree[4*s];
int op;
if(x%2==0)
{
op=0;
}
else op=1;
build(tree,0,0,s-1,a,op);
while(q--)
{
int l,v; cin >> l>> v;
l--;
a[l]=v;
long long stree=update(tree,0,0,s-1,l,a,op);
cout << stree << endl;
}
return 0;
}
I2luY2x1ZGU8Yml0cy9zdGRjKysuaD4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpsb25nIGxvbmcgYnVpbGQobG9uZyBsb25nKiB0cmVlLGludCBpLGludCB0bCxpbnQgdHIsaW50KiBhLGludCBvcCkKewogICAgaWYodGw9PXRyKQogICAgewogICAgICAgIHRyZWVbaV09YVt0bF07CiAgICAgICAgcmV0dXJuIHRyZWVbaV07CiAgICB9CiAgICBpbnQgbT0odGwrdHIpLzI7CgogICAvL2NoYW5nZWQgaGVyZQogICAgdHJlZVsyKmkrMV09YnVpbGQodHJlZSwyKmkrMSx0bCxtLGEsIW9wKTsKICAgIHRyZWVbMippKzJdPWJ1aWxkKHRyZWUsMippKzIsbSsxLHRyLGEsIW9wKTsKCiAgICBpZihvcD09MSkKICAgICAgICAgdHJlZVtpXSA9IHRyZWVbMippKzFdfHRyZWVbMippKzJdOwogICAgZWxzZQogICAgICAgICB0cmVlW2ldID0gdHJlZVsyKmkrMV1edHJlZVsyKmkrMl07CiAgICByZXR1cm4gdHJlZVtpXTsKCn0KCgoKbG9uZyBsb25nIHVwZGF0ZShsb25nIGxvbmcqIHRyZWUsaW50IGksaW50IHRsLGludCB0cixpbnQgbCxpbnQqIGEsaW50IG9wKSAKewogICAgaWYodGw9PXRyICYmIHRsPT1sKQogICAgewogICAgICAgIHRyZWVbaV09YVtsXTsKICAgICAgICByZXR1cm4gdHJlZVtpXTsKICAgIH0KICAgIGlmKGw8dGwgfHwgbD50cikKICAgIHsKICAgICAgICByZXR1cm4gdHJlZVtpXTsKICAgIH0KICAgIGludCBtPSh0bCt0cikvMjsKICAgIC8vY2hhbmdlZCBoZXJlCiAgICB0cmVlWzIqaSsxXT11cGRhdGUodHJlZSwyKmkrMSx0bCxtLGwsYSwhb3ApOwogICAgdHJlZVsyKmkrMl09dXBkYXRlKHRyZWUsMippKzIsbSsxLHRyLGwsYSwhb3ApOwogICAgaWYob3A9PTEpCiAgICAgICAgIHRyZWVbaV0gPSB0cmVlWzIqaSsxXSB8IHRyZWVbMippKzJdOwogICAgZWxzZQogICAgICAgICB0cmVlW2ldID0gdHJlZVsyKmkrMV0gXiB0cmVlWzIqaSsyXTsKICAgIHJldHVybiB0cmVlW2ldOwp9CgoKaW50IG1haW4oKQp7CiAgICBpbnQgbixxOyBjaW4gPj4gbj4+cTsKICAgIGludCBzPXBvdygyLG4pOwogICAgaW50IGFbc107CiAgICBmb3IoaW50IGk9MDtpPHM7aSsrKSBjaW4gPj4gYVtpXTsKICAgIC8vaGVpZ2h0IG9mIHRyZWUKICAgIGludCB4ID0gKGludCkoY2VpbChsb2cyKHMpKSk7CiAgICBsb25nIGxvbmcgdHJlZVs0KnNdOwogICAgaW50IG9wOwogICAgaWYoeCUyPT0wKQogICAgewogICAgICAgIG9wPTA7CiAgICB9CiAgICBlbHNlIG9wPTE7CiAgICBidWlsZCh0cmVlLDAsMCxzLTEsYSxvcCk7CgogCgoKICAgIHdoaWxlKHEtLSkKICAgIHsKICAgICAgIAogICAgICAgICAgICBpbnQgbCx2OyBjaW4gPj4gbD4+IHY7CiAgICAgICAgICAgIGwtLTsKICAgICAgICAgICAgYVtsXT12OwogICAgICAgICAgICBsb25nIGxvbmcgc3RyZWU9dXBkYXRlKHRyZWUsMCwwLHMtMSxsLGEsb3ApOwoKICAgICAgICAgICAgY291dCA8PCBzdHJlZSA8PCBlbmRsOwogICAgICAgCgogICAgfQoKICAgIHJldHVybiAwOwp9Cg==