平面上の複数の円環から構成される鎖がある.
最初(最後)の円は,次(一つ前)の円だけと交差し,
中間の各円は隣の二つの円だけと交差する.
あなたの仕事は,以下の条件を満たす最短経路を見つけることである.
- 経路は,最初と最後の円の中心をつなぐ.
- 経路は鎖中にある.すなわち,経路上のすべての点は,少なくとも一つの円の内側もしくは円周上にある.
図 E-1 は,そのような鎖の例と対応する最短経路を示したものである.
図 E-1: 鎖の例と対応する最短経路
入力は複数のデータセットからなる.
各データセットは一つの鎖の形状を表し,その形式は以下のとおりである.
n
x1 y1 r1
x2 y2 r2
...
xn yn rn
データセットの最初の行は,円の個数を表す整数 n (3 ≤ n ≤ 100) のみからなる.
続く n 行のそれぞれは,空白文字 1 個で区切られた 3 個の整数からなる.
(xi, yi) と ri は,
i 番目の円 Ci の中心の位置と半径を表す.
0 ≤ xi ≤ 1000,
0 ≤ yi ≤ 1000,
1 ≤ ri ≤ 25 であると仮定してよい.
Ci と Ci+1 (1 ≤ i ≤ n−1) は,離れた 2 点で交差すると仮定してよい.
j ≥ i+2 のとき,Ci と Cj は離れており,一方が他方を含むこともない.
加えて,それぞれの円は他の円の中心を内部に含むことがないと仮定してもよい.
入力の終わりは,ゼロを一つだけ含む行で表される.
なお,図 E-1 は,後に示す Sample Input 中の最初のデータセットに対応している.
図 E-2 は,Sample Input 中の引き続くデータセットに対する最短経路を示している.
図 E-2: 鎖の例と対応する最短経路