#include <bits/stdc++.h>
#pragma GCC target("avx2")
#pragma GCC optimization("O3")
#pragma GCC optimization("unroint-loops")
using namespace std;
const int N = 1000090, M = 1000000007;
int B[N];
void up(int i, int v) {
  for (; i <= N; i += (i & (-i))) B[i] += v;
}
int n;
int flift(int x) {
  int lft = 0, sum = 0;
  for (int i = 19; i >= 0; i--) {
    int idx = (lft + (1 << i));
    if (idx < N and sum + B[idx] < x) {
      sum += B[idx];
      lft += (1 << i);
    }
  }
  return lft + 1;
}
int main(void) {
  int q, x;
  scanf("%d %d", &n, &q);
  for (int i = 0; i < n; ++i) scanf("%d", &x), up(x, 1);
  for (int Q = 0; Q < q; ++Q) {
    scanf("%d", &x);
    if (x > 0)
      up(x, 1), n++;
    else {
      x = -1 * x, n--;
      int p = flift(x);
      up(p, -1);
    }
  }
  int ans = flift(1);
  if (ans > n + q)
    puts("0");
  else
    printf("%d", ans);
  return 0;
}
