#include <bits/stdc++.h>
#include <cstring>
#define INF 0x7f7f7f7f
#define eps ie-6
typedef long long ll;
typedef unsigned long long ull;
typedef bool bl;
typedef int it;
typedef long l;
using namespace std;
ll m,n;
ll w;
struct node{
ll num;
ll loc;
}a[1000010],p[1000010];
ull b[100010];
/*
11 3
1 3 3 3 5 7 9 11 13 15 15
1 3 6
*/
bool cmp(node x,node y)
{
return x.num<y.num;
}
inline int read(){
int s=0,w=1;
char ch=getchar();
while(ch<'0'||ch>'9'){if(ch=='-')w=-1;ch=getchar();}
while(ch>='0'&&ch<='9') s=s*10+ch-'0',ch=getchar();
return s*w;
}
void debug()
{
for(int i=1;i<=w;i++)
{
cout<<p[i].num<<" ";
}
printf("\n");
}
int main()
{
m=read(); n=read();
for(int i=1;i<=m;i++){ a[i].num=read(); a[i].loc=i; }
for(int i=1;i<=n;i++){ b[i]=read(); }
sort(b+1,b+n+1);
for(int i=1;i<=m;i++)
{
if(a[i].num!=a[i-1].num)
{
p[++w].num=a[i].num;
p[w].loc=a[i].loc;
}
}
// debug();
for(int i=1;i<=n;i++)
{
int l=1,r=w,mid;
bool flag=0;
while(l<=r)
{
mid=(l+r)/2;
// printf("l=%d r=%d mid=%d,p[mid]=%d \n",l,r,mid,p[mid].num);
if(p[mid].num==b[i])
{
flag=1;
printf("%d ",p[i].loc);
// printf("\nfind");
}
if(p[mid].num<b[i])
{
l=mid+1;
}else{
r=mid-1;
}
}
if(!flag) printf("-1 ");
}
return 0;
}