#include<cstdio>
#include<algorithm>
#define X first
#define Y second
using namespace std;
int n, cost[5005], dist[5005][5005], ans[5005];
bool mat[5005];
pair<int,int> taxi[5005], son[5005];

struct query {
    int t, s;
    bool operator < (const query &Q) const {
        if(cost[s] == cost[Q.s]) return dist[t][s] < dist[Q.t][Q.s];
        return cost[s] > cost[Q.s];
    }
}qry[25000005];

int main()
{
	freopen(".11.in","r",stdin);
	freopen(".11.out","w",stdout);
    scanf("%d",&n);
    for(int i=1;i<=n;i++) {
        scanf("%d%d",&taxi[i].X,&taxi[i].Y);
    }
    for(int i=1;i<=n;i++) {
        scanf("%d%d%d",&son[i].X,&son[i].Y,&cost[i]);
    }
    for(int i=1;i<=n;i++) {
        for(int j=1;j<=n;j++) {
            dist[i][j] = abs(taxi[i].X - son[j].X) + abs(taxi[i].Y - son[j].Y);
            qry[(i-1)*n+j].t = i; qry[(i-1)*n+j].s = j;
        }
    }
    sort(qry+1, qry+1+n*n);
    for(int i=1;i<=n*n;i++) {
        int A = qry[i].t, B = qry[i].s;
        if(!ans[A] && !mat[B]) {
            mat[B] = true;
            ans[A] = B;
        }
    }
    for(int i=1;i<=n;i++) {
        printf("%d ",ans[i]);
    }
}
