#include<bits/stdc++.h>
using namespace std;
const int maxn=2e5+5;
int a[maxn],b[maxn],p;
inline int read()
{
char c = getchar();int x = 0,s = 1;
while(c < '0' || c > '9') {if(c == '-') s = -1;c = getchar();}
while(c >= '0' && c <= '9') {x = x*10 + c -'0';c = getchar();}
return x*s;
}
vector<int> ans;
stack<int> s;
int main(){
int m,n;
m=read();
n=read();
for(int i=1;i<=m;++i) a[i]=read();
for(int i=1;i<=n;++i) b[i]=read();
for(int i=n;i>=1;--i) s.push(b[i]);
for(int i=1;i<=m;++i){
ans.insert(lower_bound(ans.begin(),ans.end(),a[i]),a[i]);
while(!s.empty()&&s.top()==i){
printf("%d\n",ans[p]);
++p;
s.pop();
}
if(s.empty()) break;
}
}