#include <bits/stdc++.h>
using namespace std;
const int S = 1<<20;
int n,m;
int p,b;
int a[S];
bool turn;
int v;
long long calc(int i, int turn)
{
if(i >= (1<<n))
{
return a[i];
}
if(turn)
{
a[i]= calc(i * 2, 0) ^ calc(i * 2 + 1, 0);
}
else
{
a[i]= calc(i * 2 , 1) | calc(i * 2 + 1, 1);
}
return a[i];
}
int main()
{
cin>>n>>m;
memset(a,-1,sizeof(a));
for(int i = (1<<n) ; i < (1 << (n+1)) ; i++)
{
cin>>a[i];
}
a[1] = calc(1, (n+1) % 2);
for(int i = 0; i < m; i++)
{
cin>>p>>b;
v = (1<<n) + p - 1;
a[v] = b;
turn = 0;
v /= 2;
while(v)
{
if(turn)
{
a[v] = a[v * 2] ^ a[v * 2 + 1];
}
else
{
a[v] = a[v * 2] | a[v * 2 + 1];
}
turn ^= 1;
v/=2;
}
cout<<a[1]<<endl;
}
return 0;
}
ICAgICNpbmNsdWRlIDxiaXRzL3N0ZGMrKy5oPgogICAgdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCQoJCgljb25zdCBpbnQgUyA9IDE8PDIwOwogICAgaW50IG4sbTsKCWludCBwLGI7CgkKCWludCBhW1NdOwogICAgYm9vbCB0dXJuOwoJaW50IHY7CgkKCQoJbG9uZyBsb25nIGNhbGMoaW50IGksIGludCB0dXJuKQogICAgewogICAgCWlmKGkgPj0gKDE8PG4pKQogICAgCXsKICAgIAkJcmV0dXJuIGFbaV07CiAgICAJfQogICAgCWlmKHR1cm4pCiAgICAJewogICAgCQlhW2ldPSBjYWxjKGkgKiAyLCAwKSBeIGNhbGMoaSAqIDIgKyAxLCAwKTsKICAgIAl9CiAgICAJZWxzZQogICAgCXsKICAgIAkJYVtpXT0gY2FsYyhpICogMiAsIDEpIHwgY2FsYyhpICogMiArIDEsIDEpOwogICAgCX0KICAgIAlyZXR1cm4gYVtpXTsKICAgIAkKICAgIH0KCQogICAgaW50IG1haW4oKQogICAgewogICAgCWNpbj4+bj4+bTsKICAgIAltZW1zZXQoYSwtMSxzaXplb2YoYSkpOwogICAgCWZvcihpbnQgaSA9ICgxPDxuKSA7IGkgPCAoMSA8PCAobisxKSkgOyBpKyspCiAgICAJewogICAgCQljaW4+PmFbaV07CiAgICAJfQoJCQogICAgCWFbMV0gPSBjYWxjKDEsIChuKzEpICUgMik7CiAgICAJCiAgICAJZm9yKGludCBpID0gMDsgaSA8IG07IGkrKykKICAgIAl7CiAgICAJCWNpbj4+cD4+YjsKICAgIAkJdiA9ICgxPDxuKSArIHAgLSAxOwogICAgCQlhW3ZdID0gYjsKICAgIAkJdHVybiA9IDA7CiAgICAJCXYgLz0gMjsKICAgIAkJd2hpbGUodikKICAgIAkJewogICAgCQkJaWYodHVybikKICAgIAkJCXsKICAgIAkJCQlhW3ZdID0gYVt2ICogMl0gXiBhW3YgKiAyICsgMV07CiAgICAJCQl9CiAgICAJCQllbHNlCiAgICAJCQl7CgkJCQkJYVt2XSA9IGFbdiAqIDJdIHwgYVt2ICogMiArIDFdOwogICAgCQkJfQoJCQkJdHVybiBePSAxOyAKICAgIAkJCXYvPTI7CiAgICAJCX0KICAgIAkJY291dDw8YVsxXTw8ZW5kbDsKICAgIAl9CiAgICAJcmV0dXJuIDA7CgogICAgfQ==