#include <bits/stdc++.h>
using namespace std;
int n, m;
int a[1 << 17];
int v[520000];
void build(int id, int l, int r, int t) {
  if (l == r) {
    v[id] = a[l - 1];
    return;
  }
  int h = (l + r) >> 1;
  build(2 * id, l, h, 1 - t);
  build(2 * id + 1, h + 1, r, 1 - t);
  if (t) {
    v[id] = v[2 * id] ^ v[2 * id + 1];
  } else {
    v[id] = v[2 * id] | v[2 * id + 1];
  }
}
void update(int id, int l, int r, int lt, int rt, int t) {
  if (l > rt || r < lt) return;
  if (l >= lt && r <= rt) {
    v[id] = a[l - 1];
    return;
  }
  int h = (l + r) >> 1;
  update(2 * id, l, h, lt, rt, 1 - t);
  update(2 * id + 1, h + 1, r, lt, rt, 1 - t);
  if (t) {
    v[id] = v[2 * id] ^ v[2 * id + 1];
  } else {
    v[id] = v[2 * id] | v[2 * id + 1];
  }
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < (1 << n); i++) scanf("%d", a + i);
  int t = (n % 2 == 0 ? 1 : 0);
  n = (1 << n);
  build(1, 1, n, t);
  for (int i = 0; i < m; i++) {
    int p, b;
    scanf("%d%d", &p, &b);
    a[p - 1] = b;
    update(1, 1, n, p, p, t);
    cout << v[1] << endl;
  }
  return 0;
}
