#include <stdio.h>
#include <stdlib.h>
// 좌표값을 저장하는 구조체 선언.
typedef struct {
int x, y;
} coord;
// 소팅함수에 사용할 비교함수.. y값 우선으로 작성.
int compare(const void *a, const void *b) {
coord ca = *(coord *)a;
coord cb = *(coord *)b;
if(ca.y > cb.y) { // y값 기준 오름차순 정렬
return 1;
} else if(ca.y == cb.y) { // y값이 같으면..
return (ca.x > cb.x)? 1: -1; // x값을 기준으로 순서값 리턴
}
return -1;
}
int main() {
int i, N;
coord ps[1000000]; // 좌표를 저장할 배열
scanf("%d", &N); // 좌표 개수를 받는다.
for(i = 0; i < N; i++) { // 개수만큼 반복
scanf("%d %d", &ps[i].x, &ps[i].y); // 좌표값을 받아서 배열에 추가
}
qsort(ps, N, sizeof(coord), compare); // coord 좌표를 기준으로 소팅
for(i = 0; i < N; i++) {
printf("%d %d\n", ps[i].x, ps[i].y); // 소팅된 좌표값 한 줄에 하나씩 출력
}
return 0;
}