#include <bits/stdc++.h>
using namespace std;
const int maxn = 200000 + 10;
priority_queue<int, vector<int>, greater<int> > pque1, pque2, pque3;
int a[maxn];
int b[maxn];
int p[maxn];
int c[maxn];
set<int> s;
int main() {
  int n;
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> p[i];
  }
  for (int i = 1; i <= n; i++) {
    cin >> a[i];
  }
  for (int i = 1; i <= n; i++) {
    cin >> b[i];
  }
  int m;
  cin >> m;
  for (int i = 1; i <= m; i++) {
    cin >> c[i];
  }
  for (int i = 1; i <= n; i++) {
    if (a[i] == 1) {
      pque1.push(p[i]);
    } else if (a[i] == 2) {
      pque2.push(p[i]);
    } else if (a[i] == 3) {
      pque3.push(p[i]);
    }
    if (b[i] == 1) {
      pque1.push(p[i]);
    } else if (b[i] == 2) {
      pque2.push(p[i]);
    } else if (b[i] == 3) {
      pque3.push(p[i]);
    }
  }
  for (int i = 1; i <= m; i++) {
    if (i == m) {
      if (c[i] == 1) {
        while (!pque1.empty()) {
          int p = pque1.top();
          if (s.find(p) == s.end()) {
            cout << p;
            s.insert(p);
            break;
          }
          pque1.pop();
        }
        if (pque1.empty()) cout << "-1";
      } else if (c[i] == 2) {
        while (!pque2.empty()) {
          int p = pque2.top();
          if (s.find(p) == s.end()) {
            cout << p;
            s.insert(p);
            break;
          }
          pque2.pop();
        }
        if (pque2.empty()) cout << "-1";
      } else if (c[i] == 3) {
        while (!pque3.empty()) {
          int p = pque3.top();
          if (s.find(p) == s.end()) {
            cout << p;
            s.insert(p);
            break;
          }
          pque3.pop();
        }
        if (pque3.empty()) cout << "-1";
      }
      return 0;
    }
    if (c[i] == 1) {
      while (!pque1.empty()) {
        int p = pque1.top();
        if (s.find(p) == s.end()) {
          cout << p << ' ';
          s.insert(p);
          break;
        }
        pque1.pop();
      }
      if (pque1.empty()) cout << "-1 ";
    } else if (c[i] == 2) {
      while (!pque2.empty()) {
        int p = pque2.top();
        if (s.find(p) == s.end()) {
          cout << p << ' ';
          s.insert(p);
          break;
        }
        pque2.pop();
      }
      if (pque2.empty()) cout << "-1 ";
    } else if (c[i] == 3) {
      while (!pque3.empty()) {
        int p = pque3.top();
        if (s.find(p) == s.end()) {
          cout << p << ' ';
          s.insert(p);
          break;
        }
        pque3.pop();
      }
      if (pque3.empty()) cout << "-1 ";
    }
  }
  return 0;
}
