#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimization("O3")
#pragma GCC optimization("unroll-loops")
using namespace std;
const int N = 4000090, M = 1000000007;
int t[N];
void add(int x, int l, int r, int p, int v) {
  if (p > r or p < l) return;
  if (l == r) {
    t[x] += v;
    return;
  }
  int m = (l + r) / 2;
  add(2 * x, l, m, p, v);
  add(2 * x + 1, m + 1, r, p, v);
  t[x] = t[2 * x] + t[2 * x + 1];
  return;
}
int kth(int x, int l, int r, int k) {
  if (l == r) return l;
  int m = (l + r) / 2;
  if (t[2 * x] >= k)
    return kth(2 * x, l, m, k);
  else
    return kth(2 * x + 1, m + 1, r, k - t[2 * x]);
}
int main() {
  int n, q, x;
  scanf("%d %d", &n, &q);
  for (int i = 0; i < n; ++i) scanf("%d", &x), add(1, 1, n, x, 1);
  for (int Q = 0; Q < q; ++Q) {
    scanf("%d", &x);
    if (x > 0)
      add(1, 1, n, x, 1);
    else
      add(1, 1, n, kth(1, 1, n, -x), -1);
  }
  if (!t[1])
    puts("0");
  else
    printf("%d", kth(1, 1, n, 1));
}
