/**
#include <stdio.h>
typedef struct
{
int x;
int y;
int h;
} q;
int i, j, k, n, m, rear = -1, front = -1, cnt = 1;
int flag = 0;
int arr[1001][1001] = {};
q queue[1000005] = {};
int dir[4][2] = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}};
void push(int x, int y, int data)
{
int z = abs(data - arr[x][y]);
if (y < 1 || y > m || x < 1 || x > n || z > 1 || arr[x][y] == -1)
{
return ;
}
rear ++;
queue[rear].x = x;
queue[rear].y = y;
queue[rear].h = arr[x][y];
arr[x][y]=-1;
if (x == n && y == m) flag ++;
// printf("%d %d\n", x, y);
}
void view()
{
for (i = 1 ; i <= n ; i ++)
{
for (j = 1 ; j <= m ; j ++)
{
printf("%02d ", arr[i][j]);
}
printf("\n");
}
printf("\n");
}
int main()
{
scanf("%d %d", &n, &m);
for (i = 1 ; i <= n ; i ++)
{
for (j = 1 ; j <= m ; j ++)
{
scanf("%d", &arr[i][j]);
}
}
rear ++;
queue[rear].x = 1;
queue[rear].y = 1;
queue[rear].h = arr[1][1];
arr[1][1]=-1;
while (front != rear)
{
int ooo = rear;
for (int t = front + 1 ; t <= ooo ; t ++)
{
front ++;
int nx = queue[front].x;
int ny = queue[front].y;
int nh = queue[front].h;
for (int q = 0 ; q < 4 ; q ++)
{
push(nx + dir[q][0], ny + dir[q][1], nh);
if(flag!=0) {
printf("%d", cnt + 1);
return 0;
}
}
}
cnt ++;
//printf("%d\n",cnt);
///printf("rear : %d\nfront : %d\n", rear, front);
// view();
}
if (flag == 0)
{
printf("0");
return 0;
}
return 0;
}
/*
4 4
7 7 8 5
6 6 7 4
5 6 7 5
2 6 6 7
#include <stdio.h>
int f(int num, int cnt)
{
if (num == 1) return cnt;
if (num % 2 == 0) num /= 2;
else num = num * 3 + 1;
return f(num, ++cnt);
}
int main()
{
int i, j, k, n, m;
scanf("%d", &n);
printf("%d", f(n, 0) + 1);
return 0;
}
#include <stdio.h>
int main()
{
int i, j, k, n, m;
scanf("%d %d", &n, &k);
for (i = 1 ; i <= n ; i ++)
{
scanf("%d", &m);
if (m == k){
printf("%d", i);
return 0;
}
}
printf("-1");
return 0;
}
#include <stdio.h>
int main()
{
int i, j, k, n, m;
scanf("%d %d", &n, &k);
for (i = 1 ; i <= m ; i ++)
{
scanf("%d", &m);
if (m == k)
{
printf("%d", i);
return 0;
}
}
printf("-1");
return 0;
}
**/
#include <stdio.h>
int a[1000001] = {};
/// 1 3 1
int f (int s, int e, int k)
{
int mid = (s + e) / 2; /// 2
if (s > e) return -1;
else if (a[mid] != k) return -1;
if (a[mid] == k) return mid;
if (a[mid] > k) f(s, mid - 1, k); /// 1 1
if (a[mid] < k) f(mid + 1, e, k);
}
int main()
{
int i, j, k, n, m, c = 0;
scanf("%d", &n);
for (i = 1 ; i <= n ; i ++)
scanf("%d", &a[i]);
scanf("%d", &m);
for (i = 1 ; i <= m ; i ++)
{
scanf("%d", &k);
printf("%d\n", f(1, n, k));
}
return 0;
}