#include <bits/stdc++.h>
using namespace std;
int a[100010], b[100010], c[100010], w[100010], fr[100010], us[100010],
    le[100010], n, m, k, e, s, g, l, r, mid;
int main() {
  scanf("%d", &n);
  for (int i = (1); i <= (n); i++) scanf("%d", &a[i]);
  scanf("%d", &m);
  for (int i = (1); i <= (m); i++) scanf("%d", &b[i]);
  for (int i = (1); i <= (n); i++) c[i] = 2000000000;
  sort(b + 1, b + m + 1);
  b[m + 1] = 2000000000;
  a[n + 1] = 2000000000;
  for (int i = (1); i <= (n); i++)
    if (a[i] > 0) {
      l = 0;
      r = n;
      mid = (l + r) / 2;
      for (; l < r; mid = (l + r) / 2) {
        if (c[mid] < a[i])
          l = mid + 1;
        else
          r = mid;
      }
      c[l] = a[i];
      fr[i] = w[l - 1];
      w[l] = i;
      le[i] = l;
    } else {
      k = m;
      fr[i] = -1;
      le[i] = -1;
      for (int j = (n); j >= (1); j--)
        for (; b[k] > c[j - 1]; k--)
          if (b[k] < c[j]) c[j] = b[k], w[j] = i;
    }
  for (int i = (n); i >= (1); i--)
    if (c[i] < 2000000000) {
      e = i;
      break;
    }
  k = n + 1;
  le[k] = e + 1;
  fr[k] = w[e];
  s = m + 1;
  g = n + 1;
  for (int i = (e); i >= (0); i--)
    if (le[fr[k]] != -1)
      k = fr[k], g = k;
    else if (le[k] - i > 1) {
      while (b[s] == b[s - 1]) s--;
      s--;
      while (b[s] >= a[k]) s--;
      while (a[g] != -1) g--;
      a[g] = b[s];
      us[s] = 1;
      g--;
      for (int j = (g); j >= (0); j--)
        if (le[j] == i && a[j] < b[s]) {
          k = j;
          g = j;
          break;
        }
    }
  k = 1;
  for (int i = (1); i <= (n); i++)
    if (a[i] == -1) {
      while (us[k]) k++;
      a[i] = b[k++];
    }
  for (int i = (1); i <= (n); i++) printf("%d ", a[i]);
}
