#include<queue>
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n,m,cnt;
queue<int> q;
vector<int> s,r;
char buf[1000001],*p1=buf,*p2=buf;
#define nc() (p1==p2 && (p2=(p1=buf)+fread(buf,1,100000,stdin),p1==p2)?EOF:*p1++)
inline int read(){
int x=0,f=1;
char ch=nc();
while(ch<48||ch>57){
if(ch=='-'){
f=-1;
}
ch=nc();
}
while(ch>=48&&ch<=57){
x=(x<<1)+(x<<3)+(ch^48),ch=nc();
}
return x*f;
}
inline void write(int x){
if(x<0){
putchar('-'),x=-x;
}
if(x>9){
write(x/10);
}
putchar(x%10+48);
return;
}
signed main(){
n=read(),m=read();
s.reserve(200000),r.reserve(200000);
for(int i=1,x;i<=n;++i){
x=read();
r.push_back(x);
}
for(int i=1,x;i<=m;++i){
x=read();
q.push(x-1);
}
for(int i=0;i<n;++i){
s.insert(upper_bound(s.begin(),s.end(),r[i]),r[i]);
auto t=q.front();
while(t==i){
q.pop();
t=q.front();
write(s[cnt++]),putchar('\n');
}
}
return 0;
}