#include <bits/stdc++.h>
using namespace std;
long long cb_q;
int n;
long long t[200005];
int prv[200005];
void update(int val, int poz) {
  while (poz <= n) {
    t[poz] += val;
    poz += poz & (-poz);
  }
}
long long query(int poz) {
  long long ans(0);
  while (poz) {
    ans += t[poz];
    poz -= poz & (-poz);
  }
  return ans;
}
int cb(long long val) {
  cb_q = 0;
  int pas(1 << 17), r(0);
  while (pas) {
    if (r + pas <= n && cb_q + t[r + pas] < val) {
      r += pas;
      cb_q += t[r];
    }
    pas >>= 1;
  }
  return r + 1;
}
int king() {
  long long cur(0), valm = query(n);
  while (valm >= 2 * cur) {
    int p = cb(2 * cur);
    cb_q = query(p - 1);
    if (prv[p] == cb_q) {
      return p;
    }
    cur = cb_q + prv[p];
  }
  return -1;
}
int main() {
  int a, b, q;
  cin >> n >> q;
  for (int i = 1; i <= n; ++i) {
    cin >> prv[i];
    update(prv[i], i);
  }
  while (q--) {
    cin >> b >> a;
    update(-prv[b], b);
    update(a, b);
    prv[b] = a;
    cout << king() << '\n';
  }
  return 0;
}
