네코의 보물

서로 겹치지 않게 원들을 선택해 쥐가 소굴에서 침대로 갈 때 넘어야 하는 벽의 최소 개수를 구한다.

어려움8기하BFS그래프아직 제출이 없습니다시간 제한8초메모리 제한512 MB

문제

마키는 집고양이다. 어느 날 마키는 먹음직스러운 마른 생선을 얻었다. 그날은 배가 고프지 않아서 생선을 잠자리에 숨겨 두었다. 그런데 문제가 있다. 집에는 쥐가 한 마리 살고 있고, 쥐는 마키의 먹이를 훔칠 기회를 노리고 있다. 마키는 자는 동안 생선을 지키려고, 쥐가 잠자리까지 오지 못하게 벽을 세우기로 했다.

마키의 집은 이차원 평면이다. 마른 생선은 (xt,yt)(x_t, y_t)에 숨겨 두었고, 쥐굴은 (xs,ys)(x_s, y_s)에 있다. 벽을 세울 후보 위치가 몇 군데 있고, ii번째 후보는 중심이 (xi,yi)(x_i, y_i)이고 반지름이 rir_i인 원이다. 세운 벽끼리 서로 닿거나 교차하지만 않는다면, 마키는 원하는 만큼 여러 후보 위치에 벽을 세울 수 있다. 한 원이 다른 원의 안쪽에 완전히 들어가 있으면 서로 닿지 않으므로 둘 다 세울 수 있다. 생선과 쥐굴의 크기, 벽의 두께는 모두 아주 작아서 무시한다.

마키가 벽을 가장 유리하게 골랐을 때, 쥐가 굴에서 출발해 잠자리에 닿기까지 넘어야 하는 벽의 최소 개수를 구하는 프로그램을 작성하라.

입력

입력은 여러 개의 데이터 집합으로 이루어진다. 각 데이터 집합은 상황 하나를 나타내며 형식은 다음과 같다.

n
xs ys xt yt
x1 y1 r1
...
xn yn rn

nn은 벽을 세울 후보 위치의 개수다 (1n10001 \le n \le 1000). (xs,ys)(x_s, y_s)는 쥐굴의 좌표, (xt,yt)(x_t, y_t)는 마키의 잠자리 좌표다. ii번째 후보 위치는 중심이 (xi,yi)(x_i, y_i)이고 반지름이 rir_i인 원이다 (1ri100001 \le r_i \le 10000, i=1,2,,ni = 1, 2, \ldots, n).

모든 좌표는 00 이상 1000010000 이하의 정수다. 후보 위치는 모두 서로 다르고, 어느 원의 둘레도 쥐굴과 잠자리를 지나지 않는다. 쥐굴과 잠자리의 위치도 서로 다르다.

입력의 끝은 0 한 줄로 표시한다. 이 줄은 데이터 집합이 아니므로 처리하지 않는다.

출력

각 데이터 집합마다 쥐가 넘어야 하는 벽의 최소 개수를 한 줄에 출력한다.