#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 7;
const int M = 18;
const int inf = 1e9 + 7;
const long long base = 51123987;
int le[M][N * 3], ri[M][N * 3];
long long b[M][N * 3];
int x[N];
int n, m;
int kq;
void update(int k, int i, int l, int r, int u) {
  if (l == u && r == u) {
    le[k][i] += kq;
    b[k][i] = le[k][i];
    ri[k][i] = le[k][i];
    return;
  }
  int g = (l + r) >> 1, next = i << 1;
  if (u <= g) update(k, next, l, g, u);
  if (u > g) update(k, next + 1, g + 1, r, u);
  le[k][i] = le[k][next];
  if (le[k][next] == g - l + 1) le[k][i] += le[k][next + 1];
  ri[k][i] = ri[k][next + 1];
  if (ri[k][next + 1] == r - g) ri[k][i] += ri[k][next];
  b[k][i] = b[k][next] + b[k][next + 1];
  b[k][i] += (long long)ri[k][next] * le[k][next + 1];
}
int main() {
  cin >> n >> m;
  for (int i = 1; i < n + 1; i++) {
    cin >> x[i];
    for (int j = 0; j < M; j++) {
      if (x[i] & (1 << j)) {
        kq = 1;
        update(j, 1, 1, n, i);
      }
    }
  }
  for (int test = 0; test < m; test++) {
    int u, v;
    scanf("%d%d", &u, &v);
    for (int j = 0; j < M; j++) {
      if (x[u] & (1 << j)) {
        kq = -1;
        update(j, 1, 1, n, u);
      }
    }
    long long res = 0;
    x[u] = v;
    for (int j = 0; j < M; j++) {
      if (x[u] & (1 << j)) {
        kq = 1;
        update(j, 1, 1, n, u);
      }
      res += (1 << j) * b[j][1];
    }
    cout << res << endl;
  }
}
