#include<iostream>
#include<queue>
using namespace std;
struct worker{
int id;
string name;
int age;
worker(int i,string s,int a):id(i),name(s),age(a){}
bool operator<(const worker& w)const{ //重载运算符实现最小堆,且按照年龄>工号>姓名优先级排序
if(age==w.age && id==w.id){
return name>w.name;
}
else if(age==w.age){
return id>w.id;
}
return age>w.age;
}
};
int main(){
int n;
while(cin>>n){
priority_queue<worker> pq;
int i,id,age;
string str;
for(i=0;i<n;i++){
cin>>id>>str>>age;
pq.push(worker(id,str,age));
}
for(i=0;i<3;i++){
cout<<pq.top().id<<" "<<pq.top().name<<" "<<pq.top().age<<endl;
pq.pop();
}
}
return 0;
}