#include<iostream>
#include<fstream>
using namespace std;
int n;
struct Node
{
int _long,_left,_right;
}in[10000];
struct STU
{
int _left_,_right_;
}out[10000];
void down(int size);
void down_left(int size)
{
int flag=0;
for(int i=0;i<n;i++)
{
if(in[i]._left<in[size]._left&&in[i]._right>in[size]._left&&in[i]._long<in[size]._long)
{
out[size]._left_=i+1;
flag=1;
break;
}
}
if(flag==0)
{
out[size]._left_=0;
}
}
void down_right(int size)
{
int flag=0;
for(int i=0;i<n;i++)
{
if(in[i]._left<in[size]._right&&in[i]._right>in[size]._right&&in[i]._long<in[size]._long)
{
out[size]._right_=i+1;
flag=1;
break;
}
}
if(flag==0)
{
out[size]._right_=0;
}
}
int main()
{
cin>>n;
for(int i=0;i<n;i++)
{
cin >> in[i]._long >> in[i]._left >> in[i]._right;
}
for(int i=0;i<n;i++)
{
down(i);
}
system("pause");
for(int i=0;i<n;i++)
{
cout<<out[i]._left_<<" "<<out[i]._right_<<endl;
}
}
void down(int size)
{
down_left(size);
down_right(size);
}