#include <bits/stdc++.h>
using namespace std;
struct segT {
  int node[1 << 21];
  void update(int l, int r, int now, int des, int dta) {
    if (des < l || r < des) return;
    if (l == r) {
      node[now] += dta;
      return;
    }
    int m = (l + r) >> 1;
    update(l, m, now * 2, des, dta);
    update(m + 1, r, now * 2 + 1, des, dta);
    node[now] = node[now * 2] + node[now * 2 + 1];
  }
  int query(int l, int r, int now, int odr, int sum) {
    if (l == r) return r - (sum + node[now] >= odr);
    int m = (l + r) >> 1;
    if (sum + node[now * 2] >= odr)
      return query(l, m, now * 2, odr, sum);
    else
      return query(m + 1, r, now * 2 + 1, odr, sum + node[now * 2]);
  }
} tree;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int n, q, i;
  cin >> n >> q;
  for (i = 0; i < n; i++) {
    int a;
    cin >> a;
    tree.update(0, n, 1, a, 1);
  }
  while (q--) {
    int a;
    cin >> a;
    if (a > 0)
      tree.update(0, n, 1, a, 1);
    else {
      int del = tree.query(0, n, 1, -a, 0) + 1;
      tree.update(0, n, 1, del, -1);
    }
  }
  int ans = tree.query(0, n, 1, 1, 0) + 1;
  if (ans == n + 1) ans = 0;
  cout << ans << endl;
  return 0;
}
