#include <bits/stdc++.h>
using namespace std;
char ch;
int n, m, tot, siz, a[100005], sum[100005], last[100005], low[100005],
    f[100005], pre[100005], b[100005], list[100005];
bool ok;
void read(int &x) {
  for (ok = 0, ch = getchar(); !isdigit(ch); ch = getchar())
    if (ch == '-') ok = 1;
  for (x = 0; isdigit(ch); x = x * 10 + ch - '0', ch = getchar())
    ;
  if (ok) x = -x;
}
void insert(int id, int val) {
  int l = 1, r = siz, m;
  while (l <= r) {
    m = (l + r) >> 1;
    if (val > low[m])
      l = m + 1;
    else
      r = m - 1;
  }
  siz = max(siz, l);
  f[id] = l, low[l] = val, last[l] = id, pre[id] = last[l - 1];
}
int find_l(int siz, int val) {
  int l = 1, r = siz, m = 0;
  while (l < r) {
    m = (l + r) >> 1;
    if (b[m] >= val)
      r = m;
    else
      l = m + 1;
  }
  return l;
}
int find_r(int siz, int val) {
  int l = 1, r = siz, m = 0;
  while (l < r) {
    m = ((l + r) >> 1) + 1;
    if (b[m] <= val)
      l = m;
    else
      r = m - 1;
  }
  return l;
}
int main() {
  read(n);
  for (int i = 2; i <= n + 1; i++) read(a[i]);
  a[1] = 0, a[n + 2] = 1061109567, n += 2;
  for (int i = 1; i <= n; i++) {
    sum[i] = sum[i - 1];
    if (a[i] < 0) sum[i]++;
  }
  read(m);
  for (int i = 1; i <= m; i++) read(b[i]);
  sort(b + 1, b + m + 1), m = unique(b + 1, b + m + 1) - b - 1;
  for (int i = 1; i <= n; i++)
    if (a[i] >= 0)
      insert(i, a[i]);
    else {
      pre[i] = f[i] = -1;
      for (int j = m, k = siz; j >= 1; j--) {
        while (low[k] >= b[j]) k--;
        siz = max(siz, k + 1), low[k + 1] = b[j], last[k + 1] = -1;
      }
    }
  for (int i = n, r, l, rest = m; i >= 1 && rest;)
    if (a[i] != -1) {
      if (pre[i] >= 0) {
        i = pre[i];
        continue;
      }
      r = find_r(rest, a[i] - 1);
      for (int j = i - 1; j >= 1; j--)
        if (a[j] != -1 && a[j] < a[i]) {
          l = find_l(rest, a[j] + 1);
          if (f[i] - f[j] - 1 == min(sum[i] - sum[j], r - l + 1)) {
            for (int p = j, q = l; p <= i && q <= r; p++)
              if (a[p] == -1) a[p] = b[q], b[q++] = -1;
            i = j, rest = l - 1;
            break;
          }
        }
    }
  for (int i = 2, j = 1; i < n; i++)
    if (a[i] == -1) {
      while (b[j] == -1) j++;
      a[i] = b[j++];
    }
  for (int i = 2; i < n; i++) printf("%d ", a[i]);
  puts("");
  return 0;
}
