#include <cstdio>
#include <vector>
using namespace std;
// 二分查找x在数组中最后一次出现的位置(1-based),不存在返回-1
int findLastOccurrence(const vector<int>& arr, int x) {
int left = 0;
int right = arr.size() - 1;
int result = -1;
while (left <= right) {
int mid = left + (right - left) / 2; // 避免溢出
if (arr[mid] == x) {
result = mid + 1; // 记录当前位置(转换为1-based)
left = mid + 1; // 继续在右侧查找更靠后的位置
} else if (arr[mid] < x) {
left = mid + 1; // 目标在右侧
} else {
right = mid - 1; // 目标在左侧
}
}
return result;
}
int main() {
int n;
scanf("%d", &n);
vector<int> arr(n);
for (int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
int q;
scanf("%d", &q);
for (int i = 0; i < q; ++i) {
int x;
scanf("%d", &x);
if (i > 0) {
printf(" ");
}
printf("%d", findLastOccurrence(arr, x));
}
printf("\n");
return 0;
}
/**************************************************************
Problem: 1895
User: yangwanning
Language: C++
Result: Accepted
Time:173 ms
Memory:1652 kb
****************************************************************/