import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main{
public static void main(String[] args) throws Exception{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] l1 = bf.readLine().split(" ");
int n = Integer.parseInt(l1[0]);
int q = Integer.parseInt(l1[1]);
String[] l2 = bf.readLine().split(" ");
int[] arr = new int[n];
for(int i = 0 ; i< n; i++){
arr[i] = Integer.parseInt(l2[i]); //数组
}
int l =0 ,r =n-1;
while(q-- > 0){
//要查找的数
int k = Integer.parseInt(bf.readLine());
l = 0;
r = n-1;
//先找左边界,即数的最小位置
while(l<r){ //终止条件为 l==r 只剩一个数 即逻辑上为找到了
int mid = l+r>>1;
if(arr[mid]>=k) r = mid;
else l= mid + 1;
}
//真正找到了
if(arr[l]==k) System.out.print(l + " ");
else System.out.print(-1 + " "); //没找到 在外面 返回-1
//然后开始找右边界,即数的最大位置
l = 0;
r = n-1;
while(l<r){
int mid = l+r+1>>1; //一定别忘了 l=mid对应的情况 mid要加1
if(arr[mid]<=k) l=mid; //记住这个if条件与上面的相反即可
else r= mid-1;
}
if(arr[l]==k) System.out.println(l);
else System.out.println(-1);
}
}
}