#include <bits/stdc++.h>
const long long P = 1e9 + 7;
using namespace std;
struct Po {
  int x, y, w, id;
} a[100010], t;
int ans[100010], t1, t2;
bool cmp(Po a, Po b) { return a.y != b.y ? a.y < b.y : a.x < b.x; }
bool cmp1(Po a, Po b) {
  return (a.x - t.x) * (b.y - t.y) - (a.y - t.y) * (b.x - t.x) < 0;
}
void work(int l, int r) {
  if (l > r) return;
  int c = min_element(a + l, a + r + 1, cmp) - a;
  swap(a[c], a[l]);
  t = a[l];
  sort(a + l + 1, a + r + 1, cmp1);
  t1 = t2 = 0;
  int k;
  for (k = r; !(t.w != a[k].w && t1 == t2); k--)
    if (a[k].w == t.w)
      t1++;
    else
      t2++;
  if (t.w)
    ans[a[k].id] = t.id;
  else
    ans[t.id] = a[k].id;
  work(l + 1, k - 1);
  work(k + 1, r);
}
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  int n;
  cin >> n;
  for (int i = 1; i <= n * 2; i++) {
    cin >> a[i].x >> a[i].y;
    a[i].w = (i > n);
    a[i].id = i > n ? i - n : i;
  }
  work(1, n * 2);
  for (int i = 1; i <= n; i++) cout << ans[i] << endl;
}
