#include <bits/stdc++.h>
using namespace std;
const int mod = 1000000007;
const int N = 210000;
void MOD(long long &a) {
  if (a >= mod) a -= mod;
}
void MOD(long long &a, long long c) {
  if (a >= c) a -= c;
}
void ADD(long long &a, long long b) {
  a += b;
  MOD(a);
}
void ADD(long long &a, long long b, long long c) {
  a += b;
  MOD(a, c);
}
long long qpow(long long a, long long b) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % mod;
    a = a * a % mod;
    b /= 2;
  }
  return ans;
}
long long qpow(long long a, long long b, long long c) {
  long long ans = 1;
  while (b) {
    if (b & 1) ans = ans * a % c;
    a = a * a % c;
    b /= 2;
  }
  return ans;
}
int n, q;
long long sum[N << 2], maxx[N << 2];
void build(int l, int r, int rt) {
  if (l == r) {
    if (l) scanf("%lld", &maxx[rt]);
    sum[rt] = maxx[rt];
    return;
  }
  int m = l + r >> 1;
  build(l, m, rt << 1);
  build(m + 1, r, rt << 1 | 1);
  maxx[rt] = max(maxx[rt << 1], maxx[rt << 1 | 1]);
  sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];
}
void change(int pos, long long val, int l, int r, int rt) {
  if (l == r && l == pos) {
    maxx[rt] = sum[rt] = val;
    return;
  }
  int m = l + r >> 1;
  if (m >= pos)
    change(pos, val, l, m, rt << 1);
  else
    change(pos, val, m + 1, r, rt << 1 | 1);
  maxx[rt] = max(maxx[rt << 1], maxx[rt << 1 | 1]);
  sum[rt] = sum[rt << 1] + sum[rt << 1 | 1];
}
long long query(int L, int R, int l, int r, int rt) {
  if (L <= l && R >= r) return sum[rt];
  int m = l + r >> 1;
  long long ans = 0;
  if (m >= L) ans += query(L, R, l, m, rt << 1);
  if (R > m) ans += query(L, R, m + 1, r, rt << 1 | 1);
  return ans;
}
pair<long long, int> x;
void get(long long val, int pos, int l, int r, int rt) {
  if (l == r) {
    x = {maxx[rt], l};
    return;
  }
  int m = l + r >> 1;
  if (maxx[rt << 1] >= val && m >= pos) get(val, pos, l, m, rt << 1);
  if (maxx[rt << 1 | 1] >= val && x.first == -1)
    get(val, pos, m + 1, r, rt << 1 | 1);
}
int main() {
  scanf("%d%d", &n, &q);
  build(0, n, 1);
  for (int i = 0; i < q; i++) {
    int pos;
    long long val;
    scanf("%d%lld", &pos, &val);
    change(pos, val, 0, n, 1);
    int ans = 0;
    bool judge = false;
    while (ans < n) {
      long long val = query(0, ans, 0, n, 1);
      x.first = -1;
      get(val, ans + 1, 0, n, 1);
      if (x.first == -1) break;
      if (x.first == val && x.second == ans + 1 ||
          x.first == query(0, x.second - 1, 0, n, 1)) {
        printf("%d\n", x.second);
        judge = true;
        break;
      } else
        ans = x.second;
    }
    if (!judge) printf("-1\n");
  }
}
