#include <bits/stdc++.h>
using namespace std;
const int iinf = 0x3f3f3f3f;
const long long linf = 0x3f3f3f3f3f3f3f3f;
const int N = 5000;
int n, m, d, p[N], c[N], g[N];
bool b[N];
vector<int> e[N];
void adde(int u, int v) { e[u].push_back(v); }
bool vis[N];
int mat[N];
bool dfs(int u) {
  for (int v : e[u])
    if (!vis[v]) {
      vis[v] = true;
      if (!~mat[v] || dfs(mat[v])) return mat[v] = u, true;
    }
  return false;
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0), cout.tie(0);
  cin >> n >> m;
  for (int i = (0), I = (n); i < I; i++) cin >> p[i];
  for (int i = (0), I = (n); i < I; i++) cin >> c[i], --c[i];
  cin >> d;
  for (int i = (0), I = (d); i < I; i++) cin >> g[i], b[--g[i]] = true;
  for (int i = (0), I = (n); i < I; i++)
    if (!b[i]) adde(p[i], c[i]);
  int mex = 0;
  vector<int> ans;
  fill(mat, mat + N, -1);
  for (int i = (d)-1, I = (0) - 1; i > I; i--) {
    while (true) {
      fill(vis, vis + N, false);
      if (dfs(mex))
        mex++;
      else
        break;
    }
    ans.push_back(mex);
    adde(p[g[i]], c[g[i]]);
  }
  reverse((ans).begin(), (ans).end());
  for (int first : ans) cout << first << '\n';
  return 0;
}
