#include <bits/stdc++.h>
using namespace std;
template <typename T>
inline void read(T &x) {
  x = 0;
  static int p;
  p = 1;
  static char c;
  c = getchar();
  while (!isdigit(c)) {
    if (c == '-') p = -1;
    c = getchar();
  }
  while (isdigit(c)) {
    x = (x << 1) + (x << 3) + (c - '0');
    c = getchar();
  }
  x *= p;
}
int n, q, a[200010];
long long sum[200010], maxn[200010 << 2], add[200010 << 2];
void pushup(int rt) { maxn[rt] = max(maxn[rt << 1], maxn[rt << 1 | 1]); }
void build(int rt, int l, int r) {
  if (l == r) {
    maxn[rt] = sum[l];
    return;
  }
  build(rt << 1, l, ((l + r) >> 1));
  build(rt << 1 | 1, ((l + r) >> 1) + 1, r);
  pushup(rt);
}
inline void pushdown(int rt, int l, int r) {
  if (add[rt]) {
    add[rt << 1] += add[rt];
    maxn[rt << 1] += add[rt];
    add[rt << 1 | 1] += add[rt];
    maxn[rt << 1 | 1] += add[rt];
    add[rt] = 0;
  }
}
void update(int rt, int l, int r, int L, int R, long long val) {
  if (L <= l && r <= R) {
    maxn[rt] += val;
    add[rt] += val;
    return;
  }
  pushdown(rt, l, r);
  if (L <= ((l + r) >> 1)) update(rt << 1, l, ((l + r) >> 1), L, R, val);
  if (R > ((l + r) >> 1)) update(rt << 1 | 1, ((l + r) >> 1) + 1, r, L, R, val);
  pushup(rt);
}
long long nows;
long long query(int rt, int l, int r, long long val) {
  if (maxn[rt] < 2 * val) return 0;
  if (l == r) {
    nows = maxn[rt];
    return l;
  }
  pushdown(rt, l, r);
  if (maxn[rt << 1] >= 2 * val)
    return query(rt << 1, l, ((l + r) >> 1), val);
  else
    return query(rt << 1 | 1, ((l + r) >> 1) + 1, r, val);
}
int main() {
  read(n);
  read(q);
  for (int i = 1; i <= n; i++) {
    read(a[i]);
    sum[i] = sum[i - 1] + a[i];
  }
  build(1, 1, n);
  while (q--) {
    static long long pos, val;
    read(pos);
    read(val);
    update(1, 1, n, pos, n, val - a[pos]);
    a[pos] = val;
    nows = a[1];
    if (nows == 0) {
      printf("1\n");
      continue;
    }
    while (1) {
      long long nowpos = query(1, 1, n, nows);
      if (nowpos == 0) {
        puts("-1");
        break;
      } else if (2 * a[nowpos] == nows) {
        printf("%lld\n", nowpos);
        break;
      }
    }
  }
  return 0;
}
