#include<iostream>
using namespace std;
struct quick{
int a;
int b;
};
void swap(int *a,int *b){
int t;
t=*a;
*a=*b;
*b=t;
}
int partition(quick *array,int left, int right){
int l = left;
int r = right;
quick temp = array[r];
while( l != r ){
while( array[l].a <= temp.a && r > l ){
l++;
}
if( l < r ){
array[r] = array[l];
r--;
}
while( array[r].a >= temp.a && r > l ){
r--;
}
if( l < r ){
array[l] = array[r];
l++;
}
}
array[l]=temp;
return l;
}
int selectPivot(int left, int right){
return (left + right)/2;
}
void quickSort(quick array[],int left, int right){
if(right <= left){ return; }
int pivot = selectPivot(left,right);
swap(array[pivot], array[right]);
pivot = partition(array,left,right);
quickSort(array,left,pivot-1);
quickSort(array,pivot+1,right);
}
int main(){
int n;
cin >> n;
quick array[n];
int i;
for(i=0;i<n;i++){
cin >> array[i].a >> array[i].b;
}
quickSort(array,0,n-1);
for(i=0;i<n;i++){
cout << array[i].a<<" "<< array[i].b<<"\n";
}
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgcXVpY2t7CmludCBhOwppbnQgYjsKfTsKCnZvaWQgc3dhcChpbnQgKmEsaW50ICpiKXsKCWludCB0OwoJdD0qYTsKCSphPSpiOwoJKmI9dDsKfSAKaW50IHBhcnRpdGlvbihxdWljayAqYXJyYXksaW50IGxlZnQsIGludCByaWdodCl7CgkKICAJaW50IGwgPSBsZWZ0OwoJaW50IHIgPSByaWdodDsgCiAgCXF1aWNrIHRlbXAgPSBhcnJheVtyXTsKICAJd2hpbGUoIGwgIT0gciApewoJICAgIHdoaWxlKCBhcnJheVtsXS5hIDw9IHRlbXAuYSAmJiByID4gbCApewoJCQlsKys7ICAKCQl9CgkgICAgCgkgICAgaWYoIGwgPCByICl7CgkJCWFycmF5W3JdID0gYXJyYXlbbF07IAoJCQlyLS07ICAKCQl9CgkgICAgCgkgICAgd2hpbGUoIGFycmF5W3JdLmEgPj0gdGVtcC5hICYmIHIgPiBsICl7CgkJCXItLTsgIAoJCX0KCSAgICAKCSAgICBpZiggbCA8IHIgKXsKCQkJYXJyYXlbbF0gPSBhcnJheVtyXTsKCQkJbCsrOyAgCgkJfQogIAl9CiAgCWFycmF5W2xdPXRlbXA7CiAgCXJldHVybiBsOwkJCn0KaW50IHNlbGVjdFBpdm90KGludCBsZWZ0LCBpbnQgcmlnaHQpewogIAlyZXR1cm4gKGxlZnQgKyByaWdodCkvMjsKfQoKdm9pZCBxdWlja1NvcnQocXVpY2sgYXJyYXlbXSxpbnQgbGVmdCwgaW50IHJpZ2h0KXsKCWlmKHJpZ2h0IDw9IGxlZnQpeyAgcmV0dXJuOyAgfQoJaW50IHBpdm90ID0gc2VsZWN0UGl2b3QobGVmdCxyaWdodCk7Cglzd2FwKGFycmF5W3Bpdm90XSwgYXJyYXlbcmlnaHRdKTsKCXBpdm90ID0gcGFydGl0aW9uKGFycmF5LGxlZnQscmlnaHQpOwoJcXVpY2tTb3J0KGFycmF5LGxlZnQscGl2b3QtMSk7CglxdWlja1NvcnQoYXJyYXkscGl2b3QrMSxyaWdodCk7Cn0KCmludCBtYWluKCl7CglpbnQgbjsKCWNpbiA+PiBuOwoJcXVpY2sgYXJyYXlbbl07CglpbnQgaTsKCglmb3IoaT0wO2k8bjtpKyspewoJCWNpbiA+PiBhcnJheVtpXS5hID4+IGFycmF5W2ldLmI7Cgl9CgkKCXF1aWNrU29ydChhcnJheSwwLG4tMSk7Cgpmb3IoaT0wO2k8bjtpKyspewoJY291dCA8PCBhcnJheVtpXS5hPDwiICI8PCBhcnJheVtpXS5iPDwiXG4iOwp9CnJldHVybiAwOwp9IAo=