#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const double EPS = 1e-10;
const int MOD = 1000000007;
const int MAXN = 110000;
const double PI = acos(-1.0);
template <class T>
T abs(T x) {
  return x < 0 ? -x : x;
}
int num, kase;
int flag[22][MAXN];
long long fun() {
  long long ret = 0;
  for (int index = 0; index < (21); ++index) {
    long long cnt = 0, t = 0;
    for (int i = (1); i <= (num + 1); ++i) {
      if (flag[index][i] == 1)
        cnt++;
      else {
        t += ((cnt * cnt + cnt) >> 1);
        cnt = 0;
      }
    }
    ret += (1 << index) * t;
  }
  return ret;
}
void findlr(int* f, int n, int& l, int& r) {
  int i = n - 1;
  while (f[i] == 1) i--;
  l = i + 1;
  i = n + 1;
  while (f[i] == 1) i++;
  r = i - 1;
}
int main() {
  int t, p;
  while (~scanf("%d%d", &num, &kase)) {
    memset(flag, 0, sizeof(flag));
    for (int i = (1); i <= (num); ++i) {
      scanf("%d", &t);
      p = 1;
      for (int ind = 0; ind < (21); ++ind) {
        flag[ind][i] = ((t & p) > 0);
        p <<= 1;
      }
    }
    long long ans = fun();
    int a, b, l, r;
    for (int tt = 0; tt < (kase); ++tt) {
      scanf("%d%d", &a, &b);
      for (int ind = 0; ind < (21); ++ind) {
        p = 1 << ind;
        if (((b & p) > 0) != flag[ind][a]) {
          findlr(flag[ind], a, l, r);
          long long lenl = a - l, lenr = r - a;
          ans += (1 - flag[ind][a] * 2) * (1 << ind) *
                 (lenl * lenr + lenl + lenr + 1);
          flag[ind][a] = !flag[ind][a];
        }
      }
      cout << ans << endl;
    }
  }
  return 0;
}
