/*
#include <stdio.h>
int a[8];
int i,j,temp;
int main()
{
for(i=1;i<=7;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<=7-1;i++)
{
for(j=1;j<=7-i;j++)
{
if(a[j]<a[j+1])
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
printf("%d\n%d",a[1],a[2]);
}
*/
/*
#include<stdio.h>
typedef struct
{
int x,y;
}oof;
int main()
{
int n,j,i;
oof a[101];
oof temp;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&a[i].x,&a[i].y);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j].x>a[j+1].x)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=1;i<=n;i++)
{
printf("%d %d\n",a[i].x,a[i].y);
}
return 0;
}
*/
/*
#include<stdio.h>
typedef struct
{
char name[50];
int score;
}pp;
int main()
{
int i,j,n;
pp a[51],temp;
scanf("%d ",&n);
for(i=1;i<=n;i++)
{
scanf("%s %d",a[i].name,&a[i].score);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(a[j].score<a[j+1].score)
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
printf("%s",a[3].name);
return 0;
}
*/
#include<stdio.h>
typedef struct
{
int z,x,y;
} oo;
int main()
{
int j,i,n;
oo temp,a[1001];
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d %d",&a[i].x,&a[i].y);
a[i].z=i;
}
for(i=1; i<n; i++)
{
for(j=1; j<=n-i; j++)
{
if(a[j].x<a[j+1].x)
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
else if(a[j].x==a[j+1].x)
{
if(a[j].y<a[j+1].y)
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
else if(a[j].y==a[j+1].y)
{
if(a[j].z>a[j+1].z)
{
temp=a[j+1];
a[j+1]=a[j];
a[j]=temp;
}
}
}
}
}
for(i=1; i<=n; i++)
{
printf("%d %d %d\n",a[i].z,a[i].x,a[i].y);
}
return 0;
}