#include <bits/stdc++.h>
using namespace std;
template <class T>
class FenwickTree {
 public:
  void init(long long int nn) {
    this->n = nn;
    bit.assign(n + 1, 0);
  }
  T qry(long long int x) {
    x = min(x, (long long int)bit.size() - 1);
    T ans = 0;
    for (; x > 0; x -= (x & -x)) {
      ans += bit[x];
    }
    return ans;
  }
  long long int search(long long int sum) {
    long long int wot = sum;
    long long int x = 0;
    for (long long int i = 22; i >= 0; i--) {
      long long int newX = x + (1 << i);
      if (newX <= n && sum > bit[newX]) {
        x = newX;
        sum -= bit[x];
      }
    }
    assert(qry(x) < wot && qry(x + 1) >= wot);
    return x + 1;
  }
  void upd(long long int x, T v) {
    if (x <= 0) return;
    for (; x <= n; x += (x & -x)) {
      bit[x] += v;
    }
  }

 private:
  long long int n;
  vector<T> bit;
};
void solve() {
  long long int n, q;
  cin >> n >> q;
  FenwickTree<long long int> tree;
  tree.init(n);
  for (long long int i = 0; i < n; i++) {
    long long int x;
    cin >> x;
    tree.upd(x, 1);
  }
  for (long long int i = 0; i < q; i++) {
    long long int x;
    cin >> x;
    if (x < 0) {
      tree.upd(tree.search(-x), -1);
    } else {
      tree.upd(x, 1);
    }
  }
  if (tree.qry(n) == 0) {
    cout << 0 << '\n';
  } else {
    cout << tree.search(1) << '\n';
  }
}
int32_t main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  solve();
  return 0;
}
