#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000;
int t[4 * maxn];
int n, nn, m, a[maxn];
void update(int k, int i, int l, int r, int tt) {
  if (i < l || i > r) return;
  if (l + 1 >= r) {
    if (tt)
      t[k] = a[l] | a[r];
    else
      t[k] = a[l] ^ a[r];
    return;
  }
  int mid = l + r >> 1, k1 = k << 1, k2 = k1 + 1;
  update(k1, i, l, mid, 1 - tt);
  update(k2, i, mid + 1, r, 1 - tt);
  if (tt)
    t[k] = t[k1] | t[k2];
  else
    t[k] = t[k1] ^ t[k2];
}
int main() {
  cin >> n >> m;
  nn = 1 << n;
  bool ok;
  if (n & 1)
    ok = 1;
  else
    ok = 0;
  for (int i = 1; i <= nn; ++i) {
    scanf("%d", a + i);
    update(1, i, 1, nn, ok);
  }
  int u, v;
  for (int i = 1; i <= m; ++i) {
    scanf("%d%d", &u, &v);
    a[u] = v;
    update(1, u, 1, nn, ok);
    printf("%d\n", t[1]);
  }
}
