#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define mem(a, b) memset(a,b,sizeof(a))
#define INF 0x3f3f3f3f
#define p_queue priority_queue
#define DBG printf("this is a input\n")
#define fi first
#define se second
#define mk(a, b) make_pair(a,b)
#define pb(a) push_back(a)
int n , m;
struct BIT
{
int tree[1000005] ;
void init()
{
mem(tree,0) ;
}
int lowbit(int k)
{
return k & -k;
}
void add(int x , int k)
{
while(x <= n)
{
tree[x] += k ;
x += lowbit(x) ;
}
}
int sum(int x)
{
int ans = 0 ;
while(x != 0)
{
ans += tree[x] ;
x -= lowbit(x) ;
}
return ans ;
}
int query(int l , int r)
{
return sum(r) - sum(l - 1) ;
}
} bit ;
int main(void)
{
scanf("%d %d",&n, &m);
int x;
for (int i = 1 ; i <= n ; i ++)
scanf("%d",&x), bit.add(x,1);
for (int i = 1 ; i <= m ; i ++)
{
scanf("%d",&x);
if(x < 0)
{
int k = abs(x);
int l = 1;
int r = n;
while (l <= r)
{
int mid = (l + r) / 2;
if (bit.sum(mid) >= k)
r = mid - 1;
else
l = mid + 1;
}
bit.add(l,-1);
}
else
bit.add(x,1);
}
int flag = 0;
for (int i = 1; i <= 1000000 ; i ++)
{
if (bit.query(i,i))
{
printf("%d\n",i);
flag = 1;
break;
}
}
if(!flag)
printf("0\n");
}