#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 100;
const int mod = 1e9 + 7;
mt19937 rng(chrono::high_resolution_clock::now().time_since_epoch().count());
int n, q, arr[maxn];
long long seg[maxn * 4];
void build(int id = 1, int l = 1, int r = n) {
  if (l == r) {
    seg[id] = arr[l];
    return;
  }
  int mid = (l + r) / 2;
  build(id * 2, l, mid);
  build(id * 2 + 1, mid + 1, r);
  seg[id] = seg[id * 2] + seg[id * 2 + 1];
}
void modify(int pos, long long val, int id = 1, int l = 1, int r = n) {
  if (l == r) {
    seg[id] = val;
    return;
  }
  int mid = (l + r) / 2;
  if (pos <= mid)
    modify(pos, val, id * 2, l, mid);
  else
    modify(pos, val, id * 2 + 1, mid + 1, r);
  seg[id] = seg[id * 2] + seg[id * 2 + 1];
}
int get_pos(long long sum, int id = 1, int l = 1, int r = n) {
  if (l == r) return l;
  int mid = (l + r) / 2;
  if (seg[id * 2] >= sum)
    return get_pos(sum, id * 2, l, mid);
  else
    return get_pos(sum - seg[id * 2], id * 2 + 1, mid + 1, r);
}
long long get(int first, int second, int id = 1, int l = 1, int r = n) {
  if (l > second || r < first) return 0;
  if (l >= first && r <= second) return seg[id];
  int mid = (l + r) / 2;
  return get(first, second, id * 2, l, mid) +
         get(first, second, id * 2 + 1, mid + 1, r);
}
int main() {
  ios_base::sync_with_stdio(false), cin.tie(0);
  cin >> n >> q;
  for (int i = 1; i <= n; i++) cin >> arr[i];
  build();
  for (int i = 0; i < q; i++) {
    int p, first;
    cin >> p >> first;
    modify(p, first);
    arr[p] = first;
    if (arr[1] == 0) {
      cout << 1 << "\n";
      continue;
    }
    int r = 1, chk = 0;
    long long sum = arr[1];
    while (r < n) {
      int pos = get_pos(sum * 2);
      sum = get(1, pos - 1);
      if (sum == arr[pos]) {
        cout << pos << "\n";
        chk = 1;
        break;
      }
      sum += arr[pos];
      r = pos;
    }
    if (!chk) cout << -1 << "\n";
  }
  return 0;
}
