#include <bits/stdc++.h>
using namespace std;
long long int n, m, a[1000005];
long long int q;
struct seg {
  long long int sum;
  long long int mx;
};
seg b[4 * 1000005 + 1];
seg join(seg lc, seg rc, long long int s1, long long int mid,
         long long int e1) {
  seg ans;
  ans.sum = lc.sum + rc.sum;
  ans.mx = max(lc.mx, rc.mx);
  return ans;
}
void build(long long int i, long long int s1, long long int e1) {
  if (s1 == e1) {
    b[i].sum = a[s1];
    b[i].mx = a[s1];
    return;
  }
  long long int mid = (s1 + e1) / 2;
  build(2 * i, s1, mid);
  build(2 * i + 1, mid + 1, e1);
  b[i] = join(b[2 * i], b[2 * i + 1], s1, mid, e1);
}
void update(long long int i, long long int s1, long long int e1,
            long long int idx, long long int val) {
  if (s1 == e1) {
    b[i].sum = val;
    b[i].mx = val;
    return;
  }
  long long int mid = (s1 + e1) / 2;
  if (idx <= mid)
    update(2 * i, s1, mid, idx, val);
  else
    update(2 * i + 1, mid + 1, e1, idx, val);
  b[i] = join(b[2 * i], b[2 * i + 1], s1, mid, e1);
}
seg query(long long int i, long long int s1, long long int e1, long long int l,
          long long int r) {
  seg nl;
  nl.mx = 0;
  nl.sum = 0;
  if (r < s1 || l > e1) return nl;
  if (l <= s1 && e1 <= r) return b[i];
  long long int mid = (s1 + e1) / 2;
  seg a1 = query(2 * i, s1, mid, l, r);
  seg a2 = query(2 * i + 1, mid + 1, e1, l, r);
  return join(a1, a2, s1, mid, e1);
}
long long int q2(long long int i, long long int s1, long long int e1,
                 long long int left, long long int x) {
  if (b[i].mx < x) return 1e18 + 5;
  if (left > e1) return 1e18 + 5;
  if (s1 == e1) return s1;
  long long int mid = (s1 + e1) / 2;
  long long int a1 = 1e18 + 5, b1 = 1e18 + 5;
  if (b[2 * i].mx >= x && mid >= left) a1 = q2(2 * i, s1, mid, left, x);
  if (a1 == 1e18 + 5 && b[2 * i + 1].mx >= x && e1 >= left)
    b1 = q2(2 * i + 1, mid + 1, e1, left, x);
  return min(a1, b1);
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  cin >> n >> q;
  for (long long int i = 1; i <= n; i++) cin >> a[i];
  build(1, 1, n);
  for (long long int i = 1; i <= q; i++) {
    long long int p, x;
    cin >> p >> x;
    update(1, 1, n, p, x);
    a[p] = x;
    long long int mxx = query(1, 1, n, 1, n).mx;
    long long int sum = 0;
    long long int now = 1;
    while (1) {
      long long int idx = q2(1, 1, n, now, sum);
      if (idx == 1e18 + 5) {
        cout << "-1\n";
        break;
      }
      sum = query(1, 1, n, 1, idx - 1).sum;
      if (sum > mxx) {
        cout << "-1\n";
        break;
      }
      if (a[idx] == sum) {
        cout << idx << "\n";
        break;
      }
      sum += a[idx];
      now = idx + 1;
    }
  }
  return 0;
}
