#include <bits/stdc++.h>
using namespace std;
long tree[4 * 1000005];
long find(long low, long high, long node, long k) {
  long mid = low + (high - low) / 2;
  if (low == high) return low;
  if (tree[2 * node] >= k)
    return find(low, mid, 2 * node, k);
  else
    return find(mid + 1, high, 2 * node + 1, k - tree[2 * node]);
}
void update(long low, long high, long node, long k, long opr) {
  long mid = low + (high - low) / 2;
  if (low == high) {
    tree[node] += opr;
    return;
  }
  if (k <= mid)
    update(low, mid, 2 * node, k, opr);
  else
    update(mid + 1, high, 2 * node + 1, k, opr);
  tree[node] = tree[2 * node] + tree[2 * node + 1];
}
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  cout.tie(NULL);
  long n, q;
  cin >> n >> q;
  memset(tree, 0, sizeof(tree));
  long i;
  for (i = 0; i < n; i++) {
    long k;
    cin >> k;
    update(1, n, 1, k, 1);
  }
  while (q--) {
    long k;
    cin >> k;
    if (k > 0)
      update(1, n, 1, k, 1);
    else {
      long key = find(1, n, 1, -k);
      update(1, n, 1, key, -1);
    }
  }
  if (tree[1] == 0)
    cout << "0" << endl;
  else
    cout << find(1, n, 1, 1) << endl;
}
