#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
using namespace std;
int p[20001]={0};
int ansl[1001],ansr[1001];
struct node{
int l;
int r;
int h;
int num;
int ansl;
int ansr;
}a[100001];
bool cmp(node x,node y){
if (x.h==y.h){
return x.num>y.num;
}
return x.h<y.h;
}
bool cmp2(node x,node y) //函数名任意取,该函数为bool形
{
return x.num<y.num; // 反之按y从小到大排列
}
int main(){
int N;
cin>>N;
for(int i=1;i<=N;i++){
cin>>a[i].h;
cin>>a[i].l;
cin>>a[i].r;
a[i].num=i;
}
sort(a+1,a+1+N,cmp);
for(int i=1;i<=N;i++){
a[i].ansl=p[a[i].l];
a[i].ansr=p[a[i].r];
for(int q=a[i].l+1;q<=a[i].r-1;q++){
p[q]=a[i].num;
}
}
sort(a+1,a+1+N,cmp2);
for(int i=1;i<=N;i++){
cout<<a[i].ansl;
cout<<" ";
cout<<a[i].ansr<<endl;
}
}