#include <bits/stdc++.h>
using namespace std;
const int MaxN=2e5;
struct LINE{
int s,e;
LINE(int s=0, int e=0):s(s),e(e){}
}line[MaxN];
bool comp(LINE lhs, LINE rhs){
return lhs.s<rhs.s;
}
int main() {
int N,s,e;
cin>>N;
for(int n=0;n<N;n++){
cin>>s>>e;
line[n]=LINE(s,e);
}
sort(line,line+N,comp);
vector<LINE> ans={line[0]};
for(int n=1;n<N;n++){
if(line[n].s<=ans.back().e){
ans.back().e=max(ans.back().e,line[n].e);
}else{
ans.push_back(line[n]);
}
}
for(LINE one:ans)
cout<<one.s<<" "<<one.e<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTWF4Tj0yZTU7CnN0cnVjdCBMSU5FewoJaW50IHMsZTsKCUxJTkUoaW50IHM9MCwgaW50IGU9MCk6cyhzKSxlKGUpe30KfWxpbmVbTWF4Tl07Cgpib29sIGNvbXAoTElORSBsaHMsIExJTkUgcmhzKXsKCXJldHVybiBsaHMuczxyaHMuczsKfQppbnQgbWFpbigpIHsKCWludCBOLHMsZTsKCWNpbj4+TjsKCWZvcihpbnQgbj0wO248TjtuKyspewoJCWNpbj4+cz4+ZTsKCQlsaW5lW25dPUxJTkUocyxlKTsKCX0KCXNvcnQobGluZSxsaW5lK04sY29tcCk7Cgl2ZWN0b3I8TElORT4gYW5zPXtsaW5lWzBdfTsKCWZvcihpbnQgbj0xO248TjtuKyspewoJCWlmKGxpbmVbbl0uczw9YW5zLmJhY2soKS5lKXsKCQkJYW5zLmJhY2soKS5lPW1heChhbnMuYmFjaygpLmUsbGluZVtuXS5lKTsKCQl9ZWxzZXsKCQkJYW5zLnB1c2hfYmFjayhsaW5lW25dKTsKCQl9Cgl9CgkKCWZvcihMSU5FIG9uZTphbnMpCgkJY291dDw8b25lLnM8PCIgIjw8b25lLmU8PCJcbiI7CglyZXR1cm4gMDsKfQ==