#include <bits/stdc++.h>
int *b;
int partition(int *a, int l, int r) {
  int i = l - 1, j = r;
  int v = a[r];
  for (;;) {
    while (a[++i] < v)
      ;
    while (v < a[--j])
      if (j == l) break;
    if (i >= j) break;
    {
      int t = a[i];
      a[i] = a[j];
      a[j] = t;
    };
    {
      int t = b[i];
      b[i] = b[j];
      b[j] = t;
    };
  }
  {
    int t = a[i];
    a[i] = a[r];
    a[r] = t;
  };
  {
    int t = b[i];
    b[i] = b[r];
    b[r] = t;
  };
  return i;
}
void Qsort(int *a, int l, int r) {
  int i;
  if (r - l > 10) {
    {
      int t = a[(l + r) / 2];
      a[(l + r) / 2] = a[r - 1];
      a[r - 1] = t;
    };
    {
      int t = b[(l + r) / 2];
      b[(l + r) / 2] = b[r - 1];
      b[r - 1] = t;
    };
    if (a[l] > a[r - 1]) {
      {
        int t = a[l];
        a[l] = a[r - 1];
        a[r - 1] = t;
      };
      {
        int t = b[l];
        b[l] = b[r - 1];
        b[r - 1] = t;
      };
    }
    if (a[l] > a[r]) {
      {
        int t = a[l];
        a[l] = a[r];
        a[r] = t;
      };
      {
        int t = b[l];
        b[l] = b[r];
        b[r] = t;
      };
    }
    if (a[r - 1] > a[r]) {
      {
        int t = a[r - 1];
        a[r - 1] = a[r];
        a[r] = t;
      };
      {
        int t = b[r - 1];
        b[r - 1] = b[r];
        b[r] = t;
      };
    }
    i = partition(a, l, r);
  } else {
    if (r <= l) return;
    i = partition(a, l, r);
  }
  Qsort(a, l, i - 1);
  Qsort(a, i + 1, r);
}
int main() {
  int n, *a, N, *p, m;
  scanf("%d", &n);
  a = (int *)malloc(n * sizeof(int));
  b = (int *)malloc(n * sizeof(int));
  for (N = 0; N < n; ++N) scanf("%d", &a[N]);
  for (N = 0; N < n; ++N) scanf("%d", &b[N]);
  Qsort(a, 0, n - 1);
  for (m = 0; m < n; ++m) printf("%d ", b[m]);
  printf("\n");
  return 0;
}
