#include<iostream>
#include<cstdlib>
#include <algorithm>
using namespace std;
const int maxn=2500000;
int son[maxn][2],cnt[maxn],siz[maxn],ord[maxn];
int val[maxn];
int rt=0,sz=0;
void pu(int x){
siz[x]=siz[son[x][0]]+siz[son[x][1]]+cnt[x];
}
void rot(int &r,int f){//f=0 左旋 ,=1右旋
int ii=son[r][!f];
son[r][!f]=son[ii][f];
son[ii][f]=r;
r=ii;
pu(r);
pu(ii);
}
void ins(int &r,int x){
if(!r){
r=++sz;
siz[r]=cnt[r]=1;
ord[r]=rand();
val[r]=x;
return;
}
if(x==val[r]){
cnt[x]++;
siz[r]++;
return;
}else{
if(x>val[r]){
ins(son[r][1],x);
if(ord[son[r][1]]>ord[r]){
rot(r,0);
}
}
if(x<val[r]){
ins(son[r][0],x);
if(ord[son[r][0]]>ord[r]){
rot(r,1);
}
}
}
pu(r);
return;
}
int findnum( int rt,int x){//查询给定排名的元素
if(!rt){
return 0;
}
if(x>siz[son[rt][0]]+cnt[rt]){
return findnum(son[rt][1],x-siz[son[rt][0]]-cnt[rt]);
}
if(x<=siz[son[rt][0]]){
return findnum(son[rt][0],x);
}
return val[rt];
}
int main(){
int n,m;
int n1[200005];
int m1[200005];
int ii=0,root=0,t=1;
cin>>m>>n;
for(int i=1;i<=m;i++){
cin>>m1[i];
}
for(int i=1;i<=n;i++){
cin>>n1[i];
}
for(int i=1;i<=m;i++){
ins(root,m1[i]);
while(n1[t]==i){
ii++;
cout<<findnum(root,ii)<<endl;
t++;
}
}
return 0;
}