#include <bits/stdc++.h>
using namespace std;
const int MaxN=2e5;
struct LINE{
int s,e;//start end
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]);
}
}
//output
for( LINE one: ans)
cout<<one.s<<" "<<one.e<<endl;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgpjb25zdCBpbnQgTWF4Tj0yZTU7CnN0cnVjdCBMSU5FewoJaW50IHMsZTsvL3N0YXJ0IGVuZAoJTElORShpbnQgcz0wLGludCBlPTApOnMocyksZShlKXt9Cn1saW5lW01heE5dOwpib29sIGNvbXAoTElORSBsaHMsTElORSByaHMpewoJcmV0dXJuIGxocy5zPHJocy5zOwp9CmludCBtYWluKCkgewoJaW50IE4scyxlOwoJY2luPj5OOwoJZm9yKGludCBuPTA7bjxOO24rKyl7CgkJY2luPj5zPj5lOwoJCWxpbmVbbl09TElORShzLGUpOwoJfQoJc29ydChsaW5lLGxpbmUrTixjb21wKTsKCXZlY3RvcjxMSU5FPiBhbnM9eyBsaW5lWzBdIH07Cglmb3IoaW50IG49MTtuPE47bisrKXsKCQlpZihsaW5lW25dLnM8PWFucy5iYWNrKCkuZSl7CgkJCWFucy5iYWNrKCkuZT1tYXgoYW5zLmJhY2soKS5lLGxpbmVbbl0uZSk7CgkJfWVsc2V7CgkJCWFucy5wdXNoX2JhY2sobGluZVtuXSk7CgkJfQoJfQoJLy9vdXRwdXQKCWZvciggTElORSBvbmU6IGFucykKCSAgY291dDw8b25lLnM8PCIgIjw8b25lLmU8PGVuZGw7Cn0=