Cornering at Poles

Time Limit : 3 sec, Memory Limit : 262144 KB

Problem H: Cornering at Poles

You are invited to a robot contest. In the contest, you are given a disc-shaped robot that is placed on a flat field. A set of poles are standing on the ground. The robot can move in all directions, but must avoid the poles. However, the robot can make turns around the poles touching them.

Your mission is to find the shortest path of the robot to reach the given goal position. The length of the path is defined by the moving distance of the center of the robot. Figure H.1 shows the shortest path for a sample layout. In this figure, a red line connecting a pole pair means that the distance between the poles is shorter than the diameter of the robot and the robot cannot go through between them.


Figure H.1. The shortest path for a sample layout

Input

The input consists of a single test case.

$N$ $G_x$ $G_y$
$x_1$ $y_1$
.
.
.
$x_N$ $y_N$

The first line contains three integers. $N$ represents the number of the poles ($1 \leq N \leq 8$). $(G_x, G_y)$ represents the goal position. The robot starts with its center at $(0, 0)$, and the robot accomplishes its task when the center of the robot reaches the position $(G_x, G_y)$. You can assume that the starting and goal positions are not the same.

Each of the following $N$ lines contains two integers. $(x_i, y_i)$ represents the standing position of the $i$-th pole. Each input coordinate of $(G_x, G_y)$ and $(x_i, y_i)$ is between $|1000$ and $1000$, inclusive. The radius of the robot is $100$, and you can ignore the thickness of the poles. No pole is standing within a $100.01$ radius from the starting or goal positions. For the distance $d_{i,j}$ between the $i$-th and $j$-th poles $(i \ne j)$, you can assume $1 \leq d_{i,j} < 199.99$ or $200.01 < d_{i,j}$.

Figure H.1 shows the shortest path for Sample Input 1 below, and Figure H.2 shows the shortest paths for the remaining Sample Inputs.


Figure H.2. The shortest paths for the sample layouts

Output

Output the length of the shortest path to reach the goal. If the robot cannot reach the goal, output 0.0. The output should not contain an error greater than 0.0001.

Sample Input 1

8 900 0
40 100
70 -80
350 30
680 -20
230 230
300 400
530 130
75 -275

Sample Output 1

1210.99416

Sample Input 2

1 0 200
120 0

Sample Output 2

200.0

Sample Input 3

3 110 110
0 110
110 0
200 10

Sample Output 3

476.95048

Sample Input 4

4 0 200
90 90
-90 90
-90 -90
90 -90

Sample Output 4

0.0

Sample Input 5

2 0 -210
20 -105
-5 -105

Sample Output 5

325.81116

Sample Input 6

8 680 -50
80 80
80 -100
480 -120
-80 -110
240 -90
-80 100
-270 100
-420 -20

Sample Output 6

1223.53071

Source: ACM International Collegiate Programming Contest , Asia Regional Tokyo, Tokyo, Japan, 2014-10-19
http://icpc.iisf.or.jp/2014-waseda/