#include<iostream>
#include<stdio.h>
#include<vector>
#include<algorithm>
using namespace std;
bool cmp(const pair<int, int> p1, const pair<int, int> p2){
return p1.second > p2.second;
//这样是从大到小排序了;
}
int main(){
int n;
//cin >> n;
scanf("%d", &n);
vector<pair<int, int>> vec;
int x, y;
for (int i = 0; i < n; i++){
//cin >> x >> y;
scanf("%d %d", &x, &y);
vec.push_back(make_pair(x, y));
}
sort(vec.begin(), vec.end(), cmp);
vector<pair<int, int>> res;
res.push_back(make_pair(vec[0].first, vec[0].second));
//cout << res[0].first << " " << res[0].second << endl;
int temp = 0;
for (int i = 1; i<n; i++){
if (vec[i].first > res[temp].first){
res.push_back(make_pair(vec[i].first, vec[i].second));
temp++;
}
}
int len = res.size();
for (int i = 0; i < len; i++){
//cout << res[i].first << " " << res[i].second << endl;
printf("%d %d\n", res[i].first, res[i].second);
}
system("pause");
return 0;
}