#include <bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10, MOD = 7 + 1e9;
int n, a[N];
struct treenode {
  int L, R, mi;
  long long sum;
  void init(int _L, int _R, long long _sum = 0, int _mi = 0) {
    L = _L, R = _R;
    sum = _sum, mi = _mi;
  }
  void update(int v) { sum = v, mi = v; }
};
treenode tree[4 * N];
void push_up(int rt) {
  tree[rt].sum = tree[2 * rt].sum + tree[2 * rt + 1].sum;
  tree[rt].mi = max(tree[2 * rt].mi, tree[2 * rt + 1].mi);
}
void build(int rt, int L, int R) {
  tree[rt].init(L, R, 0, 0);
  if (L == R) {
    tree[rt].update(a[L]);
    return;
  }
  int mid = (L + R) >> 1;
  build(2 * rt, L, mid);
  build(2 * rt + 1, mid + 1, R);
  push_up(rt);
}
void update(int rt, int p, int v) {
  int L = tree[rt].L, R = tree[rt].R;
  if (p <= L && R <= p) {
    tree[rt].update(v);
    return;
  } else {
    int mid = (L + R) >> 1;
    if (p <= mid) update(2 * rt, p, v);
    if (p > mid) update(2 * rt + 1, p, v);
    push_up(rt);
  }
}
int solve(int mi, long long num, int id = 1) {
  int l = tree[id].L, r = tree[id].R;
  if (mi > r) return n + 1;
  if (l == r) return l;
  int ret = n + 1;
  if (tree[2 * id].mi >= num) ret = solve(mi, num, 2 * id);
  if (ret == n + 1 && tree[2 * id + 1].mi >= num)
    ret = solve(mi, num, 2 * id + 1);
  return ret;
}
long long query_sum(int rt, int ql, int qr) {
  int L = tree[rt].L, R = tree[rt].R;
  if (ql <= L && R <= qr)
    return tree[rt].sum;
  else {
    int mid = (L + R) >> 1;
    long long res = 0;
    if (ql <= mid) res += query_sum(2 * rt, ql, qr);
    if (qr > mid) res += query_sum(2 * rt + 1, ql, qr);
    return res;
  }
}
int main() {
  int Q;
  scanf("%d%d", &n, &Q);
  for (int i = 1; i <= n; i++) scanf("%d", &a[i]);
  build(1, 1, n);
  while (Q--) {
    int p, x;
    scanf("%d%d", &p, &x);
    a[p] = x;
    update(1, p, x);
    int flag = -1, pos = 0;
    long long s = 0;
    while (pos < n) {
      pos = solve(pos + 1, s);
      if (pos > n) break;
      s = query_sum(1, 1, pos - 1);
      if (a[pos] == s) {
        flag = pos;
        break;
      }
      s += a[pos];
    }
    printf("%d\n", flag);
  }
  return 0;
}
