#include <bits/stdc++.h>
using namespace std;
const int MaxN=2e5;
const int MaxT=2e5;
int add[MaxT+1]={};
struct LINE{
int s, e;
LINE(int s=0,int e=0):s(s),e(e){}
};
int main() {
int N,S,T;
cin>>N;
for(int n=0;n<N;n++){
cin>>S>>T;
add[S]+=1;
add[T]-=1;
}
vector<LINE> ans;
int now=0;
for(int t=1;t<=MaxT;t++){
if(now==0 && now+add[t]>0)
ans.push_back(LINE(t));
if(now>0 && now+add[t]==0)
ans.back().e=t;
now+=add[t];
}
for(LINE one:ans)
cout<<one.s<<" "<<one.e<<"\n";
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTWF4Tj0yZTU7CmNvbnN0IGludCBNYXhUPTJlNTsKaW50IGFkZFtNYXhUKzFdPXt9OwpzdHJ1Y3QgTElORXsKCWludCBzLCBlOwoJTElORShpbnQgcz0wLGludCBlPTApOnMocyksZShlKXt9Cn07CmludCBtYWluKCkgewoJaW50IE4sUyxUOwoJY2luPj5OOwoJZm9yKGludCBuPTA7bjxOO24rKyl7CgkJY2luPj5TPj5UOwoJCWFkZFtTXSs9MTsKCQlhZGRbVF0tPTE7Cgl9CgkKCXZlY3RvcjxMSU5FPiBhbnM7CglpbnQgbm93PTA7Cglmb3IoaW50IHQ9MTt0PD1NYXhUO3QrKyl7CgkJaWYobm93PT0wICYmIG5vdythZGRbdF0+MCkKCQkJYW5zLnB1c2hfYmFjayhMSU5FKHQpKTsKCQlpZihub3c+MCAmJiBub3crYWRkW3RdPT0wKQoJCQlhbnMuYmFjaygpLmU9dDsKCQlub3crPWFkZFt0XTsKCX0KCWZvcihMSU5FIG9uZTphbnMpCgkJY291dDw8b25lLnM8PCIgIjw8b25lLmU8PCJcbiI7CglyZXR1cm4gMDsKfQ==