#include <bits/stdc++.h>
using namespace std;
int n;
int x[20005], y[20005], c[20005], ans[20005], LOC;
bool cmp(const int &u, const int &v) {
  return (x[u] - x[LOC]) * (y[v] - y[LOC]) - (y[u] - y[LOC]) * (x[v] - x[LOC]) <
         0;
}
void solve(int l, int r) {
  if (l > r) return;
  int loc = l;
  for (int i = (l), LIM = (r); i <= LIM; i++)
    if (x[c[i]] < x[c[loc]]) loc = i;
  swap(c[loc], c[l]);
  LOC = c[l];
  sort(c + l + 1, c + r + 1, cmp);
  int s0 = 0, s1 = 0, k = -100000;
  for (int i = (l + 1), LIM = (r); i <= LIM; i++) {
    if (s0 == s1 && ((c[i] <= n) ^ (c[l] <= n))) {
      if (k == -100000 || max(k - l - 1, r - k) > max(i - l - 1, r - i)) k = i;
    }
    if (c[i] <= n)
      s0++;
    else
      s1++;
  }
  ans[c[l]] = c[k], ans[c[k]] = c[l];
  solve(l + 1, k - 1), solve(k + 1, r);
}
int main() {
  scanf("%d", &n);
  for (int i = (1), LIM = (2 * n); i <= LIM; i++)
    scanf("%d%d", &x[i], &y[i]), c[i] = i;
  solve(1, 2 * n);
  for (int i = (1), LIM = (n); i <= LIM; i++) printf("%d\n", ans[i] - n);
}
