로봇 충돌

두 가지 반대 속도로 움직이는 로봇들이 있을 때 두 중심 사이 거리가 2r보다 작아지는 가장 이른 시각을 구하고, 그런 충돌이 없으면 SAFE를 출력합니다.

보통7기하시뮬레이션정렬아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

xy평면 위에 반지름이 rr인 원 모양 로봇 nn대가 서로 겹치지 않게 놓여 있다. 시각 0에 모든 로봇이 동시에 출발한다. 각 로봇의 속도는 (vx,vy)(v_x, v_y)(vx,vy)(-v_x, -v_y) 중 하나이고, 로봇은 방향을 바꾸지 않고 계속 직진한다.

두 로봇의 중심 사이 거리가 2r2r보다 가까워지면 두 로봇이 충돌한 것이다. 충돌이 일어나는지 판정하고, 일어난다면 가장 이른 충돌 시각, 즉 어떤 두 중심 사이 거리가 처음으로 2r2r이 되는 시각을 구하라.

입력

입력은 여러 개의 데이터셋으로 이루어진다. 각 데이터셋의 형식은 다음과 같다.

n
vx vy
r
rx1 ry1 u1
rx2 ry2 u2
...
rxn ryn un

nn은 로봇의 수다 (2n1000002 \le n \le 100000). (vx,vy)(v_x, v_y)는 속도 벡터이고, vxv_xvyv_y는 모두 1-1 이상 11 이하다. rr은 로봇의 반지름이며 양의 실수다. (rxi,ryi)(rx_i, ry_i)ii번 로봇 중심의 좌표이고, 모든 좌표는 1200-1200 이상 12001200 이하다. uiu_i11이면 ii번 로봇은 속도 (vx,vy)(v_x, v_y)로, 1-1이면 (vx,vy)(-v_x, -v_y)로 움직인다.

모든 로봇 쌍은 다음 세 조건을 만족한다.

  • 시각 0에서 두 중심 사이 거리가 2r+1082r + 10^{-8}보다 가깝지 않다.
  • 충돌하는 쌍이면 두 중심 사이 거리가 어느 순간 2r1082r - 10^{-8}보다 작아진다.
  • 충돌하지 않는 쌍이면 두 중심 사이 거리가 항상 2r+1082r + 10^{-8} 이상이다.

모든 데이터셋의 nn을 더한 값은 200000 이하다. 충돌이 일어나는 데이터셋에서 가장 이른 충돌 시각은 10610^6 미만이다. 입력의 마지막 줄에는 0 하나만 주어지며, 이 줄은 처리하지 않는다.

출력

각 데이터셋마다 한 줄씩 출력한다. 충돌하는 쌍이 있으면 가장 이른 충돌 시각을 소수점 아래 여섯째 자리까지 반올림해 출력하고, 소수점 아래 여섯 자리를 모두 적는다. 충돌하는 쌍이 하나도 없으면 SAFE를 출력한다.