바람개비 애니메이션

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

문제

바람개비(windmill) 애니메이션은 다음과 같이 동작한다.

평면 위에, 어느 세 점도 한 직선 위에 있지 않은 점들의 집합이 주어진다. 이 중 한 점을 첫 번째 피벗(pivot)으로 정하고, 그 점을 지나는 직선을 어떤 초기 각도로 하나 그린다. 그런 다음 이 직선을 피벗을 중심으로 일정한 속도로 반시계 방향으로 회전시킨다. 회전하던 직선이 집합의 다른 점에 닿는 순간, 그 점이 새로운 피벗이 되고 회전은 그 점을 중심으로 계속된다. (직선에는 방향이 없으므로, 직선의 각도가 $180^\circ$로 나눈 나머지를 기준으로 현재 피벗에서 어떤 점을 향하는 방향과 같아질 때 그 점에 닿는다.)

점들의 집합, 첫 번째 피벗, 그리고 직선의 초기 각도가 주어질 때, 각 점이 피벗이 되는 순서대로 피벗 점들의 수열을 출력하는 프로그램을 작성하시오. 회전 속도는 결과에 영향을 주지 않으며, 오직 점들이 피벗이 되는 순서만이 중요하다.

입력

입력의 첫째 줄에는 데이터 집합의 개수 $P$ ($1 \le P \le 1000$)가 주어진다. 각 데이터 집합은 서로 독립적으로, 동일한 방식으로 처리된다.

각 데이터 집합의 첫째 줄에는 세 정수 $M$, $S$, $I$와 실수 $A$가 공백으로 구분되어 주어진다. $M$ ($3 \le M \le 20$)은 점의 개수, $S$ ($3 \le S \le 20$)는 출력할 피벗 점의 개수, $I$ ($1 \le I \le M$)는 첫 번째 피벗 점의 번호이다. $A$ ($0 \le A < 180$)는 초기 직선이 수평 방향에서 반시계 방향으로 회전된 각도(도 단위)이다.

이어지는 $M$개의 줄에는 점들이 주어진다. 그중 $k$번째 줄에는 번호가 $k$인 점의 $X$좌표와 $Y$좌표(실수)가 공백으로 구분되어 주어진다. 어느 세 점도 한 직선 위에 있지 않다.

출력

각 데이터 집합마다 한 줄에 $S$개의 점 번호를 공백으로 구분하여 출력한다. 이는 첫 번째 피벗 다음부터 차례로 피벗이 되는 점들의 번호이다. (첫 번째 피벗의 번호는 맨 앞에 출력하지 않지만, 이후 다시 피벗이 되면 나타날 수 있다.)