大逃杀游戏是目前电子游戏界的潮流,而《玩家隐形拳击圈》(Gamers Concealed Punching Circles,简称 GCPC)是其中最受欢迎的游戏。游戏发生在一个区域内,为了简化起见,可以将其视为一个二维平面。移动和定位是游戏玩法的重要组成部分,但到达目标位置可能很危险。你对自己处理其他玩家的能力很有信心,然而,在你前往目的地的过程中,游戏本身存在两个危险:
- 游戏区域由一个蓝色圆圈限定。在这个圆圈之外,存在一个致命的力场,会让你瞬间出局。
- 在游戏区域内,有一个红色圆圈,你会暴露在炮火打击之下。进入这个圆圈也太危险了。
你想要从地图上的一个点移动到另一个点,但通往目的地的直接路径被红色圆圈挡住了,所以你需要找到绕过它的方法。你能找到一条既不离开蓝色圆圈也不进入红色圆圈的最短路径吗?只要不穿过圆圈的边界,触碰它们是被允许的。
输入格式
输入包含: 一行,包含两个整数 $x_c, y_c$,表示你当前的位置; 一行,包含两个整数 $x_d, y_d$,表示你的目的地; 一行,包含三个整数 $x_b, y_b, r_b$,表示蓝色圆圈的圆心和半径; 一行,包含三个整数 $x_r, y_r, r_r$,表示红色圆圈的圆心和半径。
所有坐标的绝对值不超过 $1\,000$,且 $1 \le r_b, r_r \le 1\,000$。红色圆圈严格位于蓝色圆圈内部。你当前的位置和目的地严格位于蓝色圆圈内部且严格位于红色圆圈外部,且它们之间的直接路径被红色圆圈阻挡。
输出格式
输出不离开蓝色圆圈且不进入红色圆圈的最短路径长度。输出必须精确到 $10^{-7}$ 的相对或绝对误差(取较小者)。
样例
样例输入 1
0 0 10 0 0 0 1000 5 0 2
样例输出 1
10.8112187742