#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 5;
long long n, q, p, x;
long long a[N], sum[N], maxn[N << 2], add[N << 2];
void build(long long k, long long l, long long r) {
  if (l == r) {
    maxn[k] = sum[l];
    return;
  }
  long long mid = l + r >> 1;
  build(k << 1, l, mid);
  build(k << 1 | 1, mid + 1, r);
  maxn[k] = max(maxn[k << 1], maxn[k << 1 | 1]);
}
inline void pushdown(long long k) {
  if (add[k]) {
    maxn[k << 1] += add[k];
    maxn[k << 1 | 1] += add[k];
    add[k << 1] += add[k];
    add[k << 1 | 1] += add[k];
    add[k] = 0;
  }
}
void change(long long k, long long l, long long r, long long qx, long long qy,
            long long v) {
  if (qx <= l && r <= qy) {
    maxn[k] += v;
    add[k] += v;
    return;
  }
  pushdown(k);
  long long mid = l + r >> 1;
  if (qx <= mid) change(k << 1, l, mid, qx, qy, v);
  if (mid < qy) change(k << 1 | 1, mid + 1, r, qx, qy, v);
  maxn[k] = max(maxn[k << 1], maxn[k << 1 | 1]);
}
long long query(long long k, long long l, long long r, long long v) {
  if (maxn[k] < 2 * v) return 0;
  if (l == r) return l;
  pushdown(k);
  long long mid = l + r >> 1;
  if (maxn[k << 1] >= 2 * v)
    return query(k << 1, l, mid, v);
  else
    return query(k << 1 | 1, mid + 1, r, v);
}
long long query2(long long k, long long l, long long r, long long pos) {
  if (l == pos && pos == r) return maxn[k];
  pushdown(k);
  long long mid = l + r >> 1;
  if (pos <= mid)
    return query2(k << 1, l, mid, pos);
  else
    return query2(k << 1 | 1, mid + 1, r, pos);
}
signed main() {
  scanf("%lld%lld", &n, &q);
  for (register long long i = 1; i <= n; ++i)
    scanf("%lld", &a[i]), sum[i] = sum[i - 1] + a[i];
  build(1, 1, n);
  while (q--) {
    scanf("%lld%lld", &p, &x);
    change(1, 1, n, p, n, x - a[p]);
    a[p] = x;
    long long last = 1;
    long long now = a[1];
    while (true) {
      long long i = query(1, 1, n, now);
      if (!i) {
        puts("-1");
        break;
      } else if (2 * a[i] == query2(1, 1, n, i)) {
        printf("%lld\n", i);
        break;
      }
      last = i;
      now = query2(1, 1, n, last);
    }
  }
  return 0;
}
