#include <bits/stdc++.h>
using namespace std;
struct FT {
  int n;
  vector<long long> vals;
  FT(const int n) : n(n), vals(vector<long long>(n + 1, 0)) {}
  void update(int i, const long long x) {
    for (++i; i <= n; i += i & -i) vals[i] += x;
  }
  long long query(int i) const {
    assert(i >= -1 && i < n);
    long long sum = 0;
    for (++i; i; i -= i & -i) sum += vals[i];
    return sum;
  }
  long long query(int i, int j) const { return query(j) - query(i - 1); }
};
int main() {
  ios::sync_with_stdio(false);
  cin.tie(nullptr), cout.tie(nullptr);
  int n, Q;
  cin >> n >> Q;
  FT ft(n);
  for (int i = 0; i < n; ++i) {
    int x;
    cin >> x;
    ft.update(i, x);
  }
  while (Q--) {
    {
      int i, x;
      cin >> i >> x;
      --i;
      const long long dx = x - ft.query(i, i);
      ft.update(i, dx);
    }
    int ans = -1;
    if (ft.query(0, 0) == 0)
      ans = 1;
    else
      for (int i = 1; i < n; ++i) {
        const long long sum = max(1LL, ft.query(i - 1));
        int lo = i, hi = n;
        while (lo < hi) {
          const int mid = (lo + hi) >> 1;
          if (ft.query(mid) < (sum << 1))
            lo = mid + 1;
          else
            hi = mid;
        }
        i = lo;
        if (i < n && ft.query(lo) == ft.query(lo - 1) * 2) {
          ans = lo + 1;
          break;
        }
      }
    cout << ans << '\n';
  }
  return 0;
}
