#include<bits/stdc++.h>
#define s(x) scanf("%d",&x);
#define p(x) printf("%d",x);
#define c cout<<endl;
#define d cout<<" ";
using namespace std;
int MIN,bo,n,p[1010][5];
struct node
{
int h,l,r,xh;
}a[1010];
void qsort(int l,int r)
{
int i=l,j=r,mid=a[(l+r)/2].h;
while(i<=j)
{
while(a[i].h<mid) i++;
while(mid<a[j].h) j--;
if(i<=j)
{
swap(a[i],a[j]);
i++;j--;
}
}
if(l<j) qsort(l,j);
if(i<r) qsort(i,r);
}
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
s(a[i].h)s(a[i].l)s(a[i].r)a[i].xh=i;
}
qsort(1,n);
for(int i=1;i<=n;i++)
{
MIN=n+1;
bo=0;
for(int j=i-1;j>=1;j--)
{
if(a[j].l<a[i].l&&a[j].r>a[i].l)
{
bo=1;
MIN=min(MIN,a[j].xh);
}
}
if(bo==1) p[a[i].xh][1]=MIN;
MIN=n+1;
bo=0;
for(int j=i-1;j>=1;j--)
{
if(a[j].l<a[i].r&&a[j].r>a[i].r)
{
bo=1;
MIN=min(MIN,a[j].xh);
}
}
if(bo==1) p[a[i].xh][2]=MIN;
}
for(int i=1;i<=n;i++)
{
cout<<p[i][1]<<" "<<p[i][2]<<endl;
}
return 0;
}