#codefestival2015okinawaf. [code_festival_2015_okinawa_f]Falconry

[code_festival_2015_okinawa_f]Falconry

问题

鹰狩是一种使用猛禽进行狩猎的方式。一天,三个鹰狩人(负责鹰狩的人)决定举行下一次比赛。

在二维平面上有NN个检查点,第ithi_{th}个检查点存在于坐标为(xi,yi)(x_i,y_i)的位置上。三位鹰狩人位于坐标分别为(xa,ya)(x_a, y_a)(xb,yb)(x_b, y_b)(xc,yc)(x_c, y_c)的位置上。每个鹰狩人都有一只猛禽。比赛开始时,这三只猛禽会开始移动。比赛的目的是让每只猛禽至少通过所有的检查点,并且使三只猛禽的移动距离之和最小化。在这种情况下,距离指的是欧几里得距离。两个点(xs,ys)(x_s, y_s)(xt,yt)(x_t, y_t)之间的距离是sqrt(xsxt)2+(ysyt)2\\sqrt{(x_s - x_t)^2 + (y_s - y_t)^2}

可以以任意顺序通过检查点。对于一只猛禽,允许它不经过任何检查点或者经过所有的检查点。同一个检查点也可以通过多次。另外,假设每只猛禽可以选择最优的移动方式。

将给出所有检查点和三个鹰狩人的坐标。请找出三只猛禽移动距离之和的最小值。


输入

输入将通过标准输入以以下格式给出

NN x1x_1 y1y_1 x2x_2 y2y_2 : xNx_N yNy_N xax_a yay_a xbx_b yby_b xcx_c ycy_c

  • 第一行给出N(1N18)N (1 \le N \le 18)
  • 从第二行开始,有NN行附加行,每行给出一个检查点的坐标。对于第ithi_{th}行,以空格分隔给出整数xi(10,000xi10,000)x_i(-10,000≤x_i≤10,000)yi(10,000yi10,000)y_i(-10,000≤y_i≤10,000)
  • (N+2)(N+2)行,以空格分隔给出xa(10,000xa10,000)x_a(-10,000≤x_a≤10,000)ya(10,000ya10,000)y_a(-10,000≤y_a≤10,000)
  • (N+3)(N+3)行,以空格分隔给出xb(10,000xb10,000)x_b(-10,000≤x_b≤10,000)yb(10,000yb10,000)y_b(-10,000≤y_b≤10,000)
  • (N+4)(N+4)行,以空格分隔给出xc(10,000xc10,000)x_c(-10,000≤x_c≤10,000)yc(10,000yc10,000)y_c(-10,000≤y_c≤10,000)

此外,所有的坐标都不相同。

换句话说,如果ineqji \\neq j,那么(xi,yi)(xj,yj)(x_i, y_i) \neq (x_j, y_j)

此外,对于每个i(1iN)i (1 \le i \le N)(xi,yi)(xa,ya)(x_i, y_i) \neq (x_a, y_a)(xi,yi)(xb,yb)(x_i, y_i) \neq (x_b, y_b)(xi,yi)(xc,yc)(x_i, y_i) \neq (x_c, y_c)成立。此外,(xa,ya)(xb,yb)(x_a, y_a) \neq (x_b, y_b)(xb,yb)(xc,yc)(x_b, y_b) \neq (x_c, y_c)(xc,yc)(xa,ya)(x_c, y_c) \neq (x_a, y_a)成立。

输出

输出通过至少一只猛禽通过所有检查点时,三只猛禽移动距离之和的最小值。

如果绝对误差或相对误差小于等于10610^{-6},则输出是可接受的。

在输出结束时打印一个换行符。


输入示例 1


3
1 1
102 98
197 -197
0 0
100 100
200 -200

输出示例 1


8.485281374239
  • 如果从(xa,ya)(x_a, y_a)开始的鸟通过第一个检查点,移动距离将为sqrt2\\sqrt{2}
  • 如果从(xb,yb)(x_b, y_b)开始的鸟通过第二个检查点,移动距离将为2sqrt22\\sqrt{2}
  • 如果从(xc,yc)(x_c, y_c)开始的鸟通过第三个检查点,移动距离将为3sqrt23\\sqrt{2}

因此,通过移动6sqrt26\\sqrt{2}可以至少通过所有的检查点一次。


输入示例 2


3
1 3
2 1
0 -2
0 0
-500 0
0 1000

输出示例 2


7.841619252964

如果从(xa,ya)(x_a, y_a)开始的鸟经过第三个检查点,然后经过第二个检查点,再经过第一个检查点,总的移动距离将为2+sqrt13+sqrt52 + \\sqrt{13} + \\sqrt{5}


输入示例 3


6
3 7
1 10
-2 -5
-3 4
0 2
6 6
-3 9
0 4
1 1

输出示例 3


22.585258012904