#include <bits/stdc++.h>
using namespace std;
const int MAX = 1000100;
const int INF = 8 * 1e18;
const int MOD = 1e9 + 7;
int n, q, a[MAX], t[4 * MAX];
void build(int x, int l, int r) {
  if (l == r) {
    t[x] = a[l];
    return;
  }
  int m = (l + r) / 2;
  build(2 * x + 1, l, m);
  build(2 * x + 2, m + 1, r);
  t[x] = t[2 * x + 1] + t[2 * x + 2];
}
void update(int x, int l, int r, int k) {
  if (l == r) {
    t[x]--;
    return;
  }
  int m = (l + r) / 2;
  if (t[2 * x + 1] >= k)
    update(2 * x + 1, l, m, k);
  else
    update(2 * x + 2, m + 1, r, k - t[2 * x + 1]);
  t[x] = t[2 * x + 1] + t[2 * x + 2];
}
void modify(int x, int l, int r, int k) {
  if (l == r) {
    t[x]++;
    return;
  }
  int m = (l + r) / 2;
  if (k > m)
    modify(2 * x + 2, m + 1, r, k);
  else
    modify(2 * x + 1, l, m, k);
  t[x] = t[2 * x + 1] + t[2 * x + 2];
}
int get(int x, int l, int r, int k) {
  if (k > t[x]) return 0;
  if (l == r) return l;
  int m = (l + r) / 2;
  if (t[2 * x + 1] >= k)
    return get(2 * x + 1, l, m, k);
  else
    return get(2 * x + 2, m + 1, r, k - t[2 * x + 1]);
}
int32_t main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> q;
  for (int i = 0; i < n; ++i) {
    int in;
    cin >> in;
    a[in]++;
  }
  build(0, 0, 1000010);
  while (q--) {
    int k;
    cin >> k;
    if (k > 0)
      modify(0, 0, 1000010, k);
    else
      update(0, 0, 1000010, -k);
  }
  cout << get(0, 0, 1000010, 1) << '\n';
  return 0;
}
