#include <stdio.h>
int partition(double* A, double* B, int low, int high) {
double pivot = A[low];
int pivotpos = B[low];
while (low < high) {
while (low < high && A[high] >= pivot)high--;
A[low] = A[high];
B[low] = B[high];
while (low < high && A[low] <= pivot)low++;
A[high] = A[low];
B[high] = B[low];
}
A[low] = pivot;
B[low] = pivotpos;
return low;
}
void quickSort(double* A, double* B, int low, int high) {
if (low < high) {
int pivotpos = partition(A, B, low, high);
quickSort(A, B, low, pivotpos - 1);
quickSort(A, B, pivotpos + 1, high);
}
}
int main() {
int i,N;
scanf("%d",&N);
double A[N],B[N];
for(i=0;i<N;i++)
{
scanf("%lf %lf",&A[i],&B[i]);
A[i]+=0.5-0.001*i;
B[i]+=0.5-0.001*i;
}
quickSort(B, A, 0, N-1);
for(i=0;i<N;i++)
{
printf("%.0f %.0f\n",A[i],B[i]);
}
return 0;
}