/*
#include <stdio.h>
int main()
{
int a[50001]= {}, b[50001]= {};
int i,j,n,temp;
scanf("%d",&n);
for(i=1; i<=n; i++)
{
scanf("%d",&a[i]);
b[i] = a[i];
}
for(i=1; i<n; i++)
{
for(j=1; j<n; j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
for(i=1; i<=n; i++)
{
//b[i]가 a의 어디에 있는지?
for(j=1;j<=n;j++)
{
if(b[i]==a[j])
{
printf("%d ",j-1);
break;
}
}
}
return 0;
}
*/
/*
#include <stdio.h>
int main()
{
int a[101]={};
int i,j,n,temp;
for(i=1;i<=7;i++)
{
scanf("%d",&a[i]);
}
for(i=1;i<=7;i++)
{
for(j=1;j<=7;j++)
{
if(a[j]>a[j+1])
{
temp=a[j];
a[j]=a[j+1];
a[j+1]=temp;
}
}
}
printf("%d\n%d",a[j],a[j-1]);
return 0;
}
*/
/*
#include <stdio.h>
typedef struct
{
int a;
int b;
}myint;
int main()
{
myint arr[101];
myint temp;
int i,j,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d",&arr[i].a,&arr[i].b);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(arr[j].a>arr[j+1].a)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
}
}
for(i=1;i<=n;i++)
{
printf("%d %d\n",arr[i].a,arr[i].b);
}
return 0;
}
*/
#include <stdio.h>
typedef struct
{
int a;
int b;
int c;
}myint;
int main()
{
int i,j,n;
myint temp;
myint arr[1001];
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d %d %d",&arr[i].a,&arr[i].b,&arr[i].c);
}
for(i=1;i<n;i++)
{
for(j=1;j<=n-i;j++)
{
if(arr[j].b>arr[j+1].b)
{
temp=arr[j];
arr[j]=arr[j+1];
arr[j+1]=temp;
}
else if(arr[j].b==arr[j+1].b)
{
if(arr[j].c>arr[j+1].c)
{
/////
}
}
}
}
for(i=1;i<=n;i++)
{
printf("%d %d %d",&arr[i].a,&arr[i].b,&arr[i].c);
}
return 0;
}