//排序是不必要的 但是为了方便也做了
#include<iostream>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
struct person{
char id[16];
int signin, signout;
};
bool cmp1(const person& p1, const person& p2){
return p1.signin < p2.signin;
}
bool cmp2(const person& p1, const person& p2){
return p1.signout > p2.signout;
}
vector<person> list;
int main(){
int n; cin >> n;
list.resize(n);
for (int i = 0; i < n; i++){
cin >> list[i].id;
int h, m, s; char ch;
cin >> h >> ch >> m >> ch >> s;
list[i].signin = h * 60 * 60 + m * 60 + s;
cin >> h >> ch >> m >> ch >> s;
list[i].signout = h * 60 * 60 + m * 60 + s;
}
sort(list.begin(), list.end(), cmp1);
cout << list[0].id << " ";
sort(list.begin(), list.end(), cmp2);
cout << list[0].id;
}