Crash and Go(relians)

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

문제

고렐리안(Gorelian)은 오락 삼아 우주를 돌아다니며 새로운 행성을 정복하는 호전적인 종족이다. 그들의 우주 전투는 대개 일방적이지만, 이따금 고렐리안이 크게 패하기도 한다. 그런 패전 중 하나에서 고렐리안의 우주선이 심하게 파손되어, 승무원들은 아래에 있는 행성으로 탈출해야 했다. 탈출 포드의 정확도가 낮아 고렐리안들은 넓은 지역에 흩어졌다(그래도 행성 표면을 평면으로 볼 수 있을 만큼은 좁은 범위다). 당신의 임무는 이들이 다시 모이는 과정을 추적하는 것이다.

각 탈출 포드에는 자신의 좌표를 알려 주는 위치 추적기와, 다른 고렐리안과 통신할 수 있는 무전기가 실려 있다. 무전기의 통신 거리는 전력량에 따라 달라진다.

고렐리안이 착륙하면, 먼저 무전기로 연락이 닿는 상대가 있는지 확인한다. 닿는 상대가 있으면 그들과 만날 지점을 정하고 그곳으로 모인다. 모이고 나면 무전기를 하나로 합쳐 더 넓은 통신 거리를 얻고, 다시 같은 과정을 반복한다. 더 이상 연락이 닿는 상대가 없을 때까지 이를 되풀이한다.

통신 조건. 두 대상은 둘 중 적어도 하나의 무전기 거리가 서로 사이의 거리를 덮을 수 있으면 통신할 수 있다. 예를 들어 앨리스의 거리가 40, 밥의 거리가 30인데 둘이 45만큼 떨어져 있다면, 어느 쪽 무전기도 상대에게 닿지 못하므로 통신할 수 없다. 반대로 둘이 35만큼 떨어져 있다면, 밥의 무전기는 앨리스에게 닿지 못해도 앨리스의 무전기가 밥에게 닿으므로 통신할 수 있다.

만나는 지점. 여러 대상이 서로 연락이 닿으면, 그들은 현재 위치들의 평균 지점에서 만난다. 각 대상은 이미 포함한 고렐리안 수와 상관없이 하나의 점으로 센다. (따라서 한 지점에 모인 세 명짜리 무리와 한 명의 고렐리안은, 인원수로 가중한 평균이 아니라 그 두 점의 중점에서 만난다.)

무전기 합치기. 합쳐진 무전기가 덮는 넓이는 합쳐지는 무전기들이 덮던 넓이의 합과 같다. 거리 $r$인 무전기는 넓이 $\pi r^2$을 덮으므로, 거리 $r_1, r_2, \dots, r_k$를 합치면 새 거리는 $r = \sqrt{r_1^2 + r_2^2 + \dots + r_k^2}$가 된다. 예를 들어 앨리스(거리 40, 넓이 $1600\pi$)와 밥(거리 30, 넓이 $900\pi$)을 합치면 넓이 $2500\pi$, 즉 거리 50이 된다.

예시 설명. 앨리스 $(100,100)$, 밥 $(130,80)$, 캐시 $(80,60)$, 데이브 $(120,150)$가 모두 거리 30으로 착륙했다고 하자. 이들 중 누구도 서로 연락이 닿지 않는다. 이제 에디가 $(90,80)$에 거리 30으로 착륙한다. 에디는 앨리스와 캐시에게 닿으므로, 세 점의 평균인 $(90,80)$에서 만나 거리 $\sqrt{2700}\approx 51.96$으로 합친다. 새 거리로는 밥에게 닿으므로 $(110,80)$에서 밥과 만나 거리 $\sqrt{3600}=60$으로 합친다. 그래도 데이브에게는 닿지 못하므로 데이브는 혼자 남는다. 최종적으로 두 무리가 남는다.

고렐리안은 입력에 주어진 순서대로 착륙한다. 한 고렐리안이 착륙하면 자신의 무리가 닿을 수 있는 모든 대상과 합쳐지고, 더 이상 합쳐질 수 없을 때까지 이 과정을 반복한다. 그런 다음에야 다음 고렐리안이 착륙한다. 합쳐진 뒤의 위치와 거리는 일반적으로 정수가 아니므로, 모든 계산은 배정밀도(double) 부동소수점으로 하라.

입력

입력은 하나 이상의 데이터셋으로 이루어진다. 각 데이터셋은 그 데이터셋에 속한 고렐리안의 수 $N$($1 \le N \le 100$)이 적힌 줄로 시작한다. $N = 0$인 줄은 입력의 끝을 뜻하며 처리하지 않는다.

이어지는 $N$개의 줄에는 각각 세 정수 $X$, $Y$, $R$이 주어진다. 이는 고렐리안이 착륙하는 좌표와 무전기의 통신 거리이며, $0 \le X \le 1000$, $0 \le Y \le 1000$, $1 \le R \le 1000$이다. 이 초기 값만 정수임이 보장되고, 합치는 과정에서 생기는 값은 정수가 아닐 수 있다. 고렐리안은 나열된 순서대로 착륙한다.

출력

각 데이터셋마다, 재결합 과정이 끝난 뒤 남는 독립적인 고렐리안 무리의 수를 한 줄에 하나씩 출력한다.