팡고른 숲

시간 제한3초메모리 제한128 MB

문제

엔트는 숲의 수호자다. 중간계에서 가장 나이가 많은 엔트인 나무수염은 자신이 지킬 나무와, 젊은 동료 엔트인 브레갈라드가 지킬 나무를 나누려고 한다.

두 엔트가 지키는 숲은 직사각형이며 숲 안의 나무는 짝수 그루다. 나무수염은 직선 하나를 그어 숲을 두 구역으로 나눈 뒤 한 구역은 자신이, 다른 구역은 브레갈라드가 맡으려 한다. 두 구역에 속한 나무의 수가 다르거나 넓이가 다르면 두 엔트는 몇 만 년 동안 다투게 되므로, 두 조건을 모두 공평하게 맞춰야 한다. 즉, 두 구역의 나무 수가 같고(각각 $N/2$그루) 넓이도 같아야 한다.

경계선(직선) 위에 정확히 놓인 나무는 두 구역 중 어느 쪽에나 넣을 수 있지만, 양쪽에 동시에 넣을 수는 없다.

입력

입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫째 줄에 나무의 수 $N$, 숲의 너비 $W$, 숲의 높이 $H$가 주어진다. 숲의 네 꼭짓점은 $(0,0)$, $(W,0)$, $(0,H)$, $(W,H)$이다. 이어지는 $N$개의 줄에 각 나무의 좌표 $x\ y$가 주어진다.

  • $2 \le N \le 500000$, $N$은 짝수
  • $2 \le W, H \le 10000$이고, $W$와 $H$가 동시에 짝수인 경우는 없다
  • 모든 좌표는 정수이며 $0 < x < W$, $0 < y < H$를 만족한다
  • 같은 위치에 있는 나무는 없다

$N = W = H = 0$인 줄이 나오면 입력이 끝난다. 이 줄은 처리하지 않는다.

출력

공평하게 나누는 방법은 여러 가지일 수 있으므로, 다음 규칙으로 유일하게 정한 답을 출력한다.

경계선은 항상 숲의 중심 $\left(\tfrac{W}{2},\ \tfrac{H}{2}\right)$를 지난다. (중심을 지나는 직선은 언제나 직사각형의 넓이를 정확히 반으로 나눈다.) 경계선이 중심과 함께 적어도 한 그루의 나무를 지나도록 잡는다. 이 직선에 방향을 정하고, 직선의 왼쪽에 있는 나무들을 나무수염의 구역으로 삼는다. 여기서 '왼쪽'은 직선의 진행 방향에서 반시계 방향으로 $90°$ 돌린 쪽을 뜻한다. 직선 위에 정확히 놓인 나무는 좌표 $(x, y)$가 작은 것부터 차례로 나무수염 쪽에 넣어, 나무수염의 나무가 정확히 $N/2$그루가 되도록 한다.

중심과 어떤 나무를 함께 지나면서 이렇게 양쪽을 각각 $N/2$그루로 만들 수 있는 방향의 직선이 여러 개라면, 방향의 각도(양의 $x$축에서 반시계 방향으로 잰 $[0°, 360°)$ 범위의 값)가 가장 작은 것을 고른다.

각 테스트 케이스마다 나무수염의 구역에 속한 $N/2$그루의 좌표를, $x$가 작은 순서로, $x$가 같으면 $y$가 작은 순서로 정렬하여 한 줄에 한 그루씩 x y 형식으로 출력한다.