#include <bits/stdc++.h>
using namespace std;
int N;
int P[202020];
int A[202020], B[202020];
int M;
int C[202020];
set<int> X[4];
set<int> did;
void solve() {
  int i, j, k, l, r, x, y;
  string s;
  cin >> N;
  for (i = 0; i < (N); i++) cin >> P[i];
  for (i = 0; i < (N); i++) cin >> A[i], X[A[i]].insert(P[i]);
  for (i = 0; i < (N); i++) cin >> B[i], X[B[i]].insert(P[i]);
  cin >> M;
  for (i = 0; i < (M); i++) {
    cin >> x;
    while (X[x].size()) {
      if (did.count(*X[x].begin()) == 0) break;
      X[x].erase(X[x].begin());
    }
    if (X[x].empty())
      (void)printf("-1");
    else {
      y = *X[x].begin();
      did.insert(y);
      X[x].erase(y);
      (void)printf("%d", y);
    }
    (void)printf("%c", (i == M - 1) ? '\n' : ' ');
  }
}
int main(int argc, char** argv) {
  string s;
  int i;
  if (argc == 1) ios::sync_with_stdio(false), cin.tie(0);
  for (i = 0; i < (argc - 1); i++) s += argv[i + 1], s += '\n';
  for (i = 0; i < (s.size()); i++) ungetc(s[s.size() - 1 - i], stdin);
  solve();
  return 0;
}
