#include <algorithm>
#include <vector>
using namespace std;
const int N = 5e4 + 5;
int n, n2 = 1;
pair<int, int> seg[N], seg2[N];
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> seg[i].first >> seg[i].second;
}
sort(seg + 1, seg + n + 1);
seg2[1] = seg[1];
for (int i = 2; i <= n; i++) {
if (seg[i].second <= seg[i - 1].second) {
;
} else {
seg2[++n2] = seg[i];
}
}
n = n2;
seg2[n + 1].first = 0x3f3f3f3f;
n++;
for (int i = 1; i <= n - 1; i++) {
cout << seg2[i].first << ' ';
while (seg2[i].second >= seg2[i + 1].first) {
i++;
}
cout << seg2[i].second << endl;
}
return 0;
}
seg2 是去除被完全包含的区间以后得所有区间