#include<bits/stdc++.h>
using namespace std;
#define ll long long
ll sz=1,sz1;
bool aa(pair<ll,ll> a,pair<ll,ll> b){
if(a.first!=b.first) return (a.first>b.first);
return (a.second<b.second);
}
void solve(){
ll n;
cin>>n;
vector<ll> x(n),y(n),r(n);
ll ma=0;
vector<pair<ll,ll>> v(n);
for(ll a=0;a<n;a++){
cin>>x[a]>>y[a]>>r[a];
ma=max(ma,r[a]);
v.push_back({r[a],a});
}
sort(v.begin(),v.end(),aa);
while(sz<ma){
sz*=2;
}
map<pair<ll,ll>,vector<ll>> mp;
vector<ll> rm(n,0);
vector<pair<ll,ll>> ba(n);
sz*=2;
for(ll c=0;c<n;c++){
if(rm[v[c].second]!=0){
continue;
}
if(v[c].first*2<=sz){
while(v[c].first*2<=sz){
sz/=2;
}
mp.clear();
for(ll a=0;a<n;a++){
ll i,j;
if(x[a]<0){
i=(x[a]-sz+1)/sz;
}else{
i=x[a]/sz;
}
if(y[a]<0){
j=(y[a]-sz+1)/sz;
}else{
j=y[a]/sz;
}
mp[{i,j}].push_back(a);
ba[a]={i,j};
}
}
vector<ll> st;
ll i=ba[v[c].second].first,j=ba[v[c].second].second;
for(ll a=-2;a<=2;a++){
for(ll b=-2;b<=2;b++){
for(auto z:mp[{i+a,j+b}]){
ll di=abs(x[v[c].second]-x[z]),di1=abs(y[v[c].second]-y[z]),di2=r[v[c].second]+r[z];
if(di*di+di1*di1<=di2*di2){
st.push_back(z);
}
}
}
}
for(auto z:st){
if(rm[z]==0)
rm[z]=v[c].second+1;
}
}
for(ll a=0;a<n;a++){
cout<<rm[a]<<" ";
}
}
signed main(){
ios::sync_with_stdio();
cin.tie(0);
cout.tie(0);
ll t=1;
// cin>>t;
for(ll a=0;a<t;a++){
solve();
}
}