#include <bits/stdc++.h>
void read_int(int &a) {
  char c = getchar();
  bool f = false;
  a = 0;
  while ((c < '0' || c > '9') && c != '-') c = getchar();
  if (c == '-') f = true, c = getchar();
  while (c >= '0' && c <= '9') a = (a << 1) + (a << 3) - 48 + c, c = getchar();
  if (f) a = -a;
  return;
}
int n, a[200003], m;
int f[200003];
void init() {
  std::fill(f + 1, f + n + 1, n + m + 1);
  a[n + m + 1] = 1e9 + 1;
  return;
}
int last[200003];
void add(int pre, int now) {
  if (pre > n)
    last[now] = last[pre];
  else
    last[now] = pre;
  return;
}
void solve() {
  int left, right, mid, ans;
  for (int i = 1; i <= n; i++)
    if (~a[i]) {
      left = 0;
      right = i - 1;
      while (left <= right) {
        mid = left + right >> 1;
        if (a[f[mid]] < a[i])
          ans = mid, left = mid + 1;
        else
          right = mid - 1;
      }
      if (a[i] < a[f[ans + 1]]) f[ans + 1] = i, add(f[ans], i);
    } else {
      int ans = n;
      for (int p = m; p >= 1; p--) {
        while (a[f[ans]] >= a[n + p] && ans) --ans;
        if (a[n + p] < a[f[ans + 1]] && a[n + p] > a[f[ans]])
          f[ans + 1] = n + p, add(f[ans], n + p);
      }
    }
  return;
}
int fz[100003], tot;
void print() {
  int ans = n, now, point = m;
  while (f[ans] == n + m + 1) --ans;
  int lim = f[ans] <= n ? f[ans] : last[f[ans]], val;
  for (int i = n; i >= 1; i--) {
    if (i < lim) {
      while (point && a[n + point] >= a[lim]) --point;
      lim = last[lim];
    }
    if (!~a[i]) {
      if (point && a[n + point] > a[lim]) {
        val = a[n + point];
        a[i] = val;
        a[n + point] = -1;
        --point;
        while (point && a[n + point] == val) --point;
      }
    }
  }
  point = m;
  for (int i = 1; i <= n; i++)
    if (!~a[i]) {
      while (!~a[n + point]) --point;
      a[i] = a[n + point];
      --point;
    }
  for (int i = 1; i <= n; i++) printf("%d ", a[i]);
  return;
}
int main() {
  read_int(n);
  for (int i = 1; i <= n; i++) read_int(a[i]);
  read_int(m);
  for (int i = 1; i <= m; i++) read_int(a[n + i]);
  std::sort(a + n + 1, a + n + m + 1);
  init();
  solve();
  print();
  return 0;
}
