#include <iostream>
#include <cstdio>
#define debug(c) cerr<<#c<<" = "<<c<<endl
namespace Newstd
{
inline int read()
{
int x=0,f=1;char ch=getchar();
while(ch<'0' || ch>'9')
{
if(ch=='-')f=-1;
ch=getchar();
}
while(ch>='0' && ch<='9')
{
x=x*10+ch-'0';ch=getchar();
}
return x*f;
}
inline void print(int x)
{
if(x<0)
{
putchar('-');x=-x;
}
if(x>9)
{
print(x/10);
}
putchar(x%10+'0');
}
}
using namespace Newstd;
using namespace std;
const int INF=(1<<29);
const int ma=200005;
struct Splay
{
int son[3];
int size,cnt;
int val,fa;
};
Splay node[ma];
int a[ma],u[ma];
int rt,chd;
inline bool chk(int p)
{
return node[node[p].fa].son[1]==p;
}
inline void PushUp(int p)
{
node[p].size=node[node[p].son[0]].size+node[node[p].son[1]].size+node[p].cnt;
}
inline void Rotate(int p)
{
int y=node[p].fa,k=chk(p),w=node[p].son[k^1];
node[y].son[k]=w,node[w].fa=y;
node[node[y].fa].son[chk(y)]=p,node[p].fa=node[y].fa;
node[p].son[k^1]=y,node[y].fa=p;
PushUp(y);
PushUp(p);
}
inline void splay(int p,int goal=0)
{
while(node[p].fa!=goal)
{
int y=node[p].fa,z=node[y].fa;
if(z!=goal)
{
if(chk(p)==chk(y))
{
Rotate(y);
}
else
{
Rotate(p);
}
}
Rotate(p);
}
if(goal==0)
{
rt=p;
}
}
inline void Insert(int k)
{
int cur=rt,p=0;
while(cur!=0 && node[cur].val!=k)
{
p=cur;
cur=node[cur].son[k>node[cur].val];
}
if(cur!=0)
{
node[cur].cnt++;
}
else
{
cur=++chd;
if(p!=0)
{
node[p].son[k>node[p].val]=cur;
}
node[cur].son[0]=node[cur].son[1]=0;
node[cur].val=k,node[cur].fa=p;
node[cur].size=node[cur].cnt=1;
}
splay(cur);
}
inline int kth(int rk)
{
int cur=rt;
while(true)
{
if(node[cur].son[0]!=0 && node[node[cur].son[0]].size>=rk)
{
cur=node[cur].son[0];
}
else if(rk>node[node[cur].son[0]].size+node[cur].cnt)
{
rk=rk-node[node[cur].son[0]].size-node[cur].cnt;
cur=node[cur].son[1];
}
else
{
splay(cur);
return cur;
}
}
}
int main(void)
{
int n,m;
scanf("%d%d",&n,&m);
for(register int i=1;i<=n;i++)
{
scanf("%d",&a[i]);
}
int last=1;
Insert(INF);
Insert(-INF);
int top=0;
for(register int i=1;i<=m;i++)
{
scanf("%d",&u[i]);
while(last<=u[i])
{
Insert(a[last]);
last++;
}
top++;
printf("%d\n",node[kth(top+1)].val);
}
return 0;
}