#include <bits/stdc++.h>
using namespace std;
template <typename T, typename U>
inline void smin(T &a, U b) {
  if (a > b) a = b;
}
template <typename T, typename U>
inline void smax(T &a, U b) {
  if (a < b) a = b;
}
set<int> s[10];
set<int>::iterator it;
int p[200010], a[200010], b[200010];
int main() {
  int N, M;
  cin >> N;
  for (int i = 0; i < N; i++) scanf("%d", p + i);
  for (int i = 0; i < N; i++) scanf("%d", a + i);
  for (int i = 0; i < N; i++) scanf("%d", b + i);
  for (int i = 0; i < N; i++) {
    s[a[i]].insert(p[i]);
    s[b[i]].insert(p[i]);
  }
  cin >> M;
  int c;
  while (M--) {
    scanf("%d", &c);
    if (!s[c].size())
      printf("-1 ");
    else {
      it = s[c].begin();
      int price = *it;
      cout << price << ' ';
      for (int i = 1; i <= 3; i++) s[i].erase(price);
    }
  }
  return 0;
}
