#include <bits/stdc++.h>
using namespace std;
const int MAXN = 5e6 + 13;
const int MAXK = 5e6 + 13;
const long long INF = 2e9 + 7;
const long long MD = 1e9 + 7;
const long double EPS = 1e-9;
const long double PI = 3.14159265359;
void solve() {
  int n;
  cin >> n;
  vector<int> p(n, 0), a(n, 0), b(n, 0);
  set<int> s[4], used;
  for (int i = 0; i < n; i++) cin >> p[i];
  for (int i = 0; i < n; i++) {
    cin >> a[i];
    s[a[i]].insert(p[i]);
  }
  for (int i = 0; i < n; i++) {
    cin >> b[i];
    s[b[i]].insert(p[i]);
  }
  int m;
  cin >> m;
  for (int i = 0; i < m; i++) {
    int x;
    cin >> x;
    if (s[x].empty()) {
      cout << -1 << ' ';
      continue;
    }
    int value = *(s[x].begin());
    while (!s[x].empty() && used.count(value)) {
      s[x].erase(value);
      value = *(s[x].begin());
    }
    if (s[x].empty()) {
      cout << -1 << ' ';
      continue;
    }
    cout << value << ' ';
    s[x].erase(value);
    used.insert(value);
  }
}
int main() {
  solve();
  return 0;
}
