Space Kite

문제 정보

문제

안드로메다를 여행하는 우주선 Space Kite는 몇 달 전 5년 반에 걸친 여행을 마쳤고, 이제 다시 새로운 여행을 구상 중이다.
지난 여행이 무척 힘들었지만, 더 힘든 여정도 이겨낼 수 있다는 자신감을 얻었기 때문에, 이번에는 더 새롭고, 더 도전적인 여행을 계획하고 있다.

안드로메다는 N개의 행성으로 구성된다. 모든 행성은 고유 번호가 부여돼 있고, 3차원 공간에 존재하고, 움직이지 않고, 반지름이 같고, 서로 표면이 붙어 있지 않다.

Space Kite는 이번 여행의 주요 지점 M개를 정했고, 현재 위치에서 주요 지점으로 차례대로 이동할 것이다.
이동은 항상 출발점과 주요 지점, 또는 주요 지점과 주요 지점 사이를 지나는 최단 경로를 따르며, 이 경로가 행성과 부딪히는 경우는 없다.

우주는 어둡고, 조용하고, 그 어떤 표지판도 없어서, 우주선이 제대로 이동하고 있는지 알기란 매우 어렵다.
그래서 Space Kite는 가장 가까운 행성과 교신을 하며 이동한다. 만약 가장 가까운 행성이 여러 개라면 그 모든 행성과 교신한다.
다만, 우주선과 교신할 수 있는 교신 거리가 정해져 있어서, 교신 거리 이내에 행성이 하나도 없으면 교신을 하지 않는다.
다시 말해, 우주선과 행성 표면의 거리가 교신 거리 이하여야 그 행성과 교신을 할 수 있다.

Space Kite는 새로운 여행에서 교신하게 될 모든 행성에 미리 연락을 해두고 싶다.
하지만, Space Kite는 요즘 여행 준비로 매우 바쁜 것 같으니, 우리가 대신 나서서 교신하게 될 행성들을 모두 찾아 주자.

문제를 좀 더 쉽게 만들기 위해, 현재 Space Kite의 위치와 M 개의 주요 지점에서는 가장 가까운 행성이 두 개 이상 존재하지 않는다고 가정한다.

입력

입력의 첫 줄에는 테스트 케이스의 수 T 가 주어진다.

각 테스트 케이스의 첫 줄에는 행성의 수 N (1 <= N <= 100), 여행의 주요 지점 수 M (1 <= M <= 500), 모든 행성의 반지름 R (1 <= R <= 100), Space Kite의 교신 거리 D (1 <= D <= 100) 가 공백을 사이에 두고 주어진다.
그 다음 N 줄에 걸쳐 각 행성의 중심 좌표 X_i, Y_i, Z_i 가 한 줄에 하나씩 공백을 사이에 두고 주어진다. 행성의 고유 번호는 입력 순서대로 1 번부터 N 번이 된다.
그 다음 줄에는 현재 Space Kite의 위치 좌표 X, Y, Z가 공백을 사이에 두고 주어진다.
그 다음 M 줄에 걸쳐 Space Kite가 여행할 주요 지점의 좌표 XP_i, YP_i, ZP_i 가 한 줄에 하나씩 공백을 사이에 두고 주어진다. Space Kite는 현재 위치에서 M개의 입력된 좌표로 순서대로 이동한다. 입력으로 주어지는 좌표는 모두 1 이상 10000 이하의 정수이다.

출력

각 테스트 케이스에 대해 한 줄에 하나씩 교신하게 될 행성의 개수 P 와 대상 행성 P 개의 고유 번호를 공백을 사이에 두고 출력한다. 이 때 각 고유 번호는 오름차순으로 정렬해서 출력해야 한다.

예제 입력

2
4 2 1 1
6 5 1
6 1 1
2 5 1
9 1 1
1 3 1
8 3 1
8 5 1
4 1 1 1
6 5 1
6 1 1
2 5 1
9 1 1
2 3 1
9 3 1

예제 출력

3 1 2 3
4 1 2 3 4

노트

1개의 댓글이 있습니다.