#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
****************************************************************/