3차원 공간에 $N$개의 구면 거울이 있다.
$(0,0,0)$에서 $(u,v,w)$ 방향으로 레이저를 발사한다. 레이저는 항상 직선으로 나아간다.
점 $I$에서 발사된 레이저가 어떤 구면 거울 위의 점 $Q$에서 반사된다고 하자. 이때 점 $N$을, 그 구면 거울의 바깥에 있으면서 구면 거울의 중심과 $Q$를 잇는 직선 위에 있는 한 점이라고 하자. 그러면 레이저는 다음 조건을 만족하는 방향 $R$로 반사된다.
(1) $R$은 $I$, $Q$, $N$이 만드는 평면 위에 있으며, $\angle IQN = \angle NQR$을 만족한다.
레이저가 마지막으로 반사되는 점의 위치를 찾는 프로그램을 작성하시오.
첫째 줄에 테스트 케이스의 개수 $T$가 주어진다. 각 테스트 케이스의 첫째 줄에는 구면 거울의 개수 $N$이 주어진다. 둘째 줄에는 레이저를 발사한 방향 $u$, $v$, $w$가 공백으로 구분되어 주어진다.
다음 $N$개의 줄에는 구면 거울을 설명하는 네 정수 $x_i$, $y_i$, $z_i$, $r_i$가 주어진다. 그 구면 거울의 중심은 $(x_i, y_i, z_i)$이고 반지름은 $r_i$이다.
$1 \le N \le 100$
$-100 \le u, v, w \le 100$
$-100 \le x_i, y_i, z_i \le 100$
$5 \le r_i \le 30$
$u^2 + v^2 + w^2 > 0$
두 구면 거울 사이의 거리는 적어도 $0.1$이다. 점 $(0,0,0)$은 모든 구면 거울의 바깥에 있으며, 각 구면 거울과 적어도 $0.1$만큼 떨어져 있다.
레이저는 구면 거울에 적어도 1번, 많아야 5번 반사된다. 또한 반사각 $\theta$(즉 $\angle NQR$이며 $\angle IQN$과 같다)는 항상 $85^\circ$보다 작다.
각 테스트 케이스에 대해 마지막으로 반사되는 점의 좌표를 공백으로 구분하여 출력한다. 모든 좌표는 소수점 넷째 자리에서 반올림하여 셋째 자리까지 출력한다.