import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int m=sc.nextInt(),n=sc.nextInt();
int []a=new int[m];//存储猫的友善值
int []b=new int[m];//猫能给的友善
for(int i=0;i<m;i++){
a[i]=sc.nextInt();
}
for(int i=0;i<m;i++){
b[i]=sc.nextInt();
}
int[][]c=new int[n][2];
/**
用c来存储人的状态,0存储可以提供的善意,1存储需要的爱意
**/
for(int i=0;i<n;i++){
c[i][0]=sc.nextInt();
}
for(int i=0;i<n;i++){
c[i][1]=sc.nextInt();
}
Arrays.sort(c,(x,y)->x[1]-y[1]);//按降序排列
int[]max=new int[n];
max[0]=c[0][0];
for(int i=1;i<n;i++){
max[i]=Math.max(max[i-1],c[i][0]);//找到0-i最大的人可以提供的友善值
}
StringBuilder res=new StringBuilder();
//找到正好比猫需要的友善值大一点的那个人的位置,因为降序所找到位置前面所有人的友善值都满足
//可以提供给猫,哈哈哈,可以和上一步的max联动了
for(int i=0;i<m;i++){
int l=0,r=n-1;
while(l<=r){
int mid=(l+r)/2;
if(c[mid][1]<=a[i]){
l=mid+1;
}else{
r=mid-1;
}
}
res.append(r<0||max[r]<b[i]?-1:max[r]).append(" ");//如果找不到就是-1,找的倒就调用max
}
System.out.println(res);
}
}