#include<bits/stdc++.h>
using namespace std;
#define ll long long
struct node{
int h,l,r,id,ans1,ans2;
}a[100005];
bool cmp(node a,node b){
return a.h>b.h;
if(a.h==b.h) return a.id<b.id;
}
template <typename TM>
void in(TM &n) {
char c=getchar();
int f=1;
while ((c>'9' || c<'0') && c!='-') c=getchar();
if(c=='-') f=-1, c=getchar();
for(n=0; c>='0'&&c<='9'; c=getchar()) n=n*10+c-'0';
n*=f;
}
int main(){
int n;
in(n);
for(int i=1;i<=n;i++){
in(a[i].h),in(a[i].l),in(a[i].r);
a[i].id=i;
}
sort(a+1,a+1+n,cmp);
for(int i=1;i<=n;i++){
bool f1=0,f2=0;
for(int j=i+1;j<=n;j++){
if(f1&&f2) continue;
if(a[i].h>a[j].h){
if(!f1&&a[i].l>a[j].l&&a[i].l<a[j].r){
a[a[i].id].ans1=a[j].id;
f1=1;
}
if(!f2&&a[i].r<a[j].r&&a[i].r>a[j].l){
a[a[i].id].ans2=a[j].id;
f2=1;
}
}
}
if(!f1) a[a[i].id].ans1=0;
if(!f2) a[a[i].id].ans2=0;
}
for(int i=1;i<=n;i++){
printf("%d %d\n",a[i].ans1,a[i].ans2);
}
return 0;
}