#include <bits/stdc++.h>
using namespace std;
const int N = 200100;
struct point {
  int x, y, col, id;
} a[N], tmp;
int n, ans[N];
bool cmp1(const point& a, const point& b) {
  if (a.y != b.y) return a.y < b.y;
  return a.x < b.x;
}
bool cmp2(const point& a, const point& b) {
  return (a.x - tmp.x) * (b.y - tmp.y) < (a.y - tmp.y) * (b.x - tmp.x);
}
void solve(int l, int r) {
  if (l > r) return;
  sort(a + l, a + r + 1, cmp1);
  tmp = a[l];
  sort(a + l + 1, a + r + 1, cmp2);
  int k = r;
  for (int i = 0, j = 0; tmp.col == a[k].col || i != j; --k)
    if (tmp.col == a[k].col)
      ++i;
    else
      ++j;
  ans[a[k].id] = tmp.id;
  ans[tmp.id] = a[k].id;
  solve(l + 1, k - 1);
  solve(k + 1, r);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  cin >> n;
  for (int i = 1; i <= 2 * n; ++i) {
    cin >> a[i].x >> a[i].y;
    a[i].col = (i > n);
    a[i].id = i;
  }
  solve(1, 2 * n);
  for (int i = 1; i <= n; ++i) cout << (ans[i] - n) << '\n';
  return 0;
}
