#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){}
bool operator<(const LINE rhs)const{
return s<rhs.s;}
} 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);
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+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTWF4Tj0yZTU7CnN0cnVjdCBMSU5FewoJaW50IHMsIGU7CglMSU5FKGludCBzPTAsaW50IGU9MCk6cyhzKSxlKGUpe30KCWJvb2wgb3BlcmF0b3I8KGNvbnN0IExJTkUgcmhzKWNvbnN0ewoJCXJldHVybiBzPHJocy5zO30KfSBsaW5lW01heE5dOwpib29sIGNvbXAoTElORSBsaHMsIExJTkUgcmhzKXsKCXJldHVybiBsaHMuczxyaHMuczsKfQoKaW50IG1haW4oKSB7CglpbnQgTixzLGU7CgljaW4+Pk47Cglmb3IoaW50IG49MDtuPE47bisrKXsKCQljaW4+PnM+PmU7CgkJbGluZVtuXT1MSU5FKHMsZSk7Cgl9Cglzb3J0KGxpbmUsIGxpbmUrTik7Cgl2ZWN0b3I8TElORT4gYW5zPXtsaW5lWzBdfTsKCWZvcihpbnQgbj0xO248TjtuKyspewoJCWlmKGxpbmVbbl0uczw9YW5zLmJhY2soKS5lKXsKCQkJYW5zLmJhY2soKS5lPW1heChhbnMuYmFjaygpLmUsbGluZVtuXS5lKTsKCQl9ZWxzZXsKCQkJYW5zLnB1c2hfYmFjayhsaW5lW25dKTsKCQl9Cgl9Cglmb3IoTElORSBvbmU6IGFucykKCWNvdXQ8PG9uZS5zPDwiICI8PG9uZS5lPDwiXG4iOwoJcmV0dXJuIDA7Cn0=