#include <bits/stdc++.h>
using namespace std;
namespace FastIO {
const int SIZE = 1 << 16;
char buf[SIZE], obuf[SIZE], str[60];
int bi = SIZE, bn = SIZE, opt;
int read(char* s) {
  while (bn) {
    for (; bi < bn && buf[bi] <= ' '; bi++)
      ;
    if (bi < bn) break;
    bn = fread(buf, 1, SIZE, stdin);
    bi = 0;
  }
  int sn = 0;
  while (bn) {
    for (; bi < bn && buf[bi] > ' '; bi++) s[sn++] = buf[bi];
    if (bi < bn) break;
    bn = fread(buf, 1, SIZE, stdin);
    bi = 0;
  }
  s[sn] = 0;
  return sn;
}
bool rd(int& x) {
  int n = read(str), bf;
  if (!n) return 0;
  int i = 0;
  if (str[i] == '-')
    bf = -1, i++;
  else
    bf = 1;
  for (x = 0; i < n; i++) x = x * 10 + str[i] - '0';
  if (bf < 0) x = -x;
  return 1;
}
};  // namespace FastIO
using namespace FastIO;
const int maxl = 1e6 + 10;
int n, m, ans, cas, k, q;
int a[maxl], b[maxl];
inline int sum(int i) {
  int ret = 0;
  while (i) {
    ret += b[i];
    i -= i & -i;
  }
  return ret;
}
inline void add(int i, int x) {
  if (i == 0) return;
  while (i <= n) {
    b[i] += x;
    i += i & -i;
  }
}
inline void prework() {
  rd(n);
  rd(q);
  for (register int i = 1; i <= n; ++i) {
    rd(a[i]);
    add(a[i], 1);
  }
}
inline int find_kth(int k) {
  int ans = 0, cnt = 0;
  for (register int i = 21; i >= 0; --i) {
    ans += (1 << i);
    if (ans >= n || cnt + b[ans] >= k)
      ans -= (1 << i);
    else
      cnt += b[ans];
  }
  return ans + 1;
}
inline void mainwork() {
  int num = n, d;
  for (register int i = 1; i <= q; ++i) {
    rd(k);
    if (k > 0) {
      num++;
      add(k, 1);
    } else {
      num--;
      d = find_kth(-k);
      add(d, -1);
    }
  }
  if (num == 0)
    ans = 0;
  else
    ans = find_kth(1);
}
inline void print() { printf("%d", ans); }
int main() {
  int t = 1;
  for (cas = 1; cas <= t; cas++) {
    prework();
    mainwork();
    print();
  }
  return 0;
}
