#include <bits/stdc++.h>
using namespace std;
struct node {
  long long sum, biggest;
};
vector<node> segtree;
void update(int i, int l, int r, int p, int v) {
  if (l == r) {
    segtree[i].sum = v;
    segtree[i].biggest = v;
  } else {
    int mid = (l + r) / 2;
    if (p <= mid) {
      update(2 * i, l, mid, p, v);
    } else {
      update(2 * i + 1, mid + 1, r, p, v);
    }
    segtree[i].sum = segtree[2 * i].sum + segtree[2 * i + 1].sum;
    segtree[i].biggest =
        max(segtree[2 * i].biggest, segtree[2 * i + 1].biggest);
  }
}
long long query_sum(int i, int l, int r, int a, int b) {
  int mid = (l + r) / 2;
  if (r < a || l > b || a > b) {
    return 0;
  } else if (a <= l && r <= b) {
    return segtree[i].sum;
  } else {
    long long v1 = query_sum(2 * i, l, mid, a, b);
    long long v2 = query_sum(2 * i + 1, mid + 1, r, a, b);
    return v1 + v2;
  }
}
int query(int i, int l, int r, int a, int b, long long v) {
  int mid = (l + r) / 2;
  if (r < a || l > b || a > b) {
    return -1;
  } else if (a <= l && r <= b) {
    if (l == r) {
      return segtree[i].biggest >= v ? l : -1;
    } else if (segtree[2 * i].biggest >= v) {
      return query(2 * i, l, mid, a, b, v);
    } else if (segtree[2 * i + 1].biggest >= v) {
      return query(2 * i + 1, mid + 1, r, a, b, v);
    } else {
      return -1;
    }
  } else {
    int v1 = query(2 * i, l, mid, a, b, v);
    int v2 = query(2 * i + 1, mid + 1, r, a, b, v);
    return v1 != -1 ? v1 : v2;
  }
}
int main() {
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int n, q;
  cin >> n >> q;
  vector<int> arr(n);
  segtree.resize(4 * n);
  for (int i = 0; i < n; ++i) {
    cin >> arr[i];
    update(1, 0, n - 1, i, arr[i]);
  }
  for (int i = 0, p, v; i < q; ++i) {
    cin >> p >> v;
    arr[p - 1] = v;
    update(1, 0, n - 1, p - 1, v);
    long long cum = 0;
    int pos = -1, ans = -1;
    while (ans == -1) {
      int next_pos = query(1, 0, n - 1, pos + 1, n - 1, cum);
      assert(next_pos == -1 || arr[next_pos] >= cum);
      if (next_pos == -1) {
        break;
      } else if (arr[next_pos] == query_sum(1, 0, n - 1, 0, next_pos - 1)) {
        ans = next_pos + 1;
      } else {
        cum = query_sum(1, 0, n - 1, 0, next_pos);
        pos = next_pos;
      }
    }
    cout << ans << "\n";
  }
}
