#include <bits/stdc++.h>
using namespace std;
long long binexp(long long a, long long b, long long m) {
  long long res = 1;
  a = a % m;
  while (b) {
    if (b & 1) res = (a * 1LL * res) % m;
    a = (a * 1LL * a) % m;
    b >>= 1;
  }
  return res;
}
const long long N = 2e5 + 5;
long long bit[N], seg[4 * N], arr[N];
inline void build(long long i, long long s, long long e) {
  if (s == e) {
    seg[i] = arr[s];
  } else {
    long long m = (s + e) >> 1, p = i << 1, q = p | 1;
    build(p, s, m);
    build(q, m + 1, e);
    seg[i] = seg[p] > seg[q] ? seg[p] : seg[q];
  }
}
inline void update(long long i, long long s, long long e, long long ind,
                   long long val) {
  if (s == e) {
    arr[ind] = val;
    seg[i] = val;
  } else {
    long long m = (s + e) >> 1, p = i << 1, q = p | 1;
    if (ind <= m)
      update(p, s, m, ind, val);
    else
      update(q, m + 1, e, ind, val);
    seg[i] = seg[p] > seg[q] ? seg[p] : seg[q];
  }
}
inline long long query(long long i, long long s, long long e, long long l,
                       long long r) {
  if (s > r or e < l) return 0;
  if (s >= l and e <= r) return seg[i];
  long long m = (s + e) >> 1, p = i << 1, q = p | 1;
  long long a = query(p, s, m, l, r), b = query(q, m + 1, e, l, r);
  return a > b ? a : b;
}
inline void Update(long long i, long long val) {
  for (; i < N; i += i & -i) bit[i] += val;
}
inline long long Query(long long i) {
  long long s = 0;
  for (; i; i -= i & -i) s += bit[i];
  return s;
}
inline long long down(long long i, long long s, long long e, long long sum) {
  if (s == e) return s;
  long long m = (s + e) >> 1, p = i << 1, q = p | 1;
  if (seg[p] >= sum)
    return down(p, s, m, sum);
  else
    return down(q, m + 1, e, sum);
}
inline long long get(long long i, long long s, long long e, long long l,
                     long long r, long long sum) {
  if (s > r or e < l) return -1;
  if (s >= l and e <= r) {
    if (seg[i] < sum) return -1;
    return down(i, s, e, sum);
  }
  long long m = (s + e) >> 1, p = i << 1, q = p | 1;
  long long res = get(p, s, m, l, r, sum);
  if (res != -1) return res;
  return get(q, m + 1, e, l, r, sum);
}
signed main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  long long n, q;
  cin >> n >> q;
  for (long long i = 1; i <= n; i++) cin >> arr[i], Update(i, arr[i]);
  build(1, 1, n);
  while (q--) {
    long long p, v, f = 0;
    cin >> p >> v;
    Update(p, v - arr[p]);
    update(1, 1, n, p, v);
    long long j = 0;
    long long sum = 0;
    while (j < n) {
      long long ans = get(1, 1, n, j + 1, n, sum);
      if (ans == -1) {
        f = 1;
        cout << "-1\n";
        break;
      }
      j = ans;
      if (arr[j] == Query(j - 1)) {
        f = 1;
        cout << j << "\n";
        break;
      }
      sum = Query(j);
    }
    if (f == 0) cout << "-1\n";
  }
  return 0;
}
