F - Robot

Languages: C, C++, Java, Tiger, Python, Pascal, JavaScript, Haskell, C#
Time & Memory limits: (details)

Los robots se están popularizando. Ellos son usados hoy día no solo en fábricas, sino en las casas. Un programador y sus amigos decidieron crear su propio robot casero. Como debes saber, la mayoría de los programadores gustan de tomar cerveza cuando se reúnen en fiestas. Después que termina la fiesta una gran cantidad de botellas vacías quedan sobre la mesa. Así que se decidió que el robot recogiera las botellas vacías al final de las fiestas.

La mesa es rectangular de dimensiones $w \times l$. El robot empieza en el punto $(x_r, y_r)$ y $N$ botellas están localizadas en los puntos $(x_i, y_i)$ para $i = 1, 2,…, N$ . Para recoger una botella el robot debe moverse hacia el punto en donde la botella está, tomarla, y entonces llevarla a algún punto del borde de la mesa para dejarla. El robot solamente puede sostener una botella a la vez y por simplicidad del programa para manejarlo, es permitido dejar las botellas solamente en el borde de la mesa. 

Puedes asumir para este problema que el tamaño del robot y de las botellas son suficientemente pequeños (el robot y las botellas son puntos), así que el robot sosteniendo una botella es capaz de pasar sobre el punto donde otra botella está localizada.

En este problema debes determinar la longitud de la ruta mínima que debe seguir el robot para recoger todas las botellas.

Input

La primera línea de la entrada contiene dos enteros $w$ y $l$ ($2 \leq w, l \leq 1000$) – las dimensiones de la mesa.

La segunda línea contiene un entero $N$ ($1 \leq N \leq 18$) – el número de botellas sobre la mesa. Cada una de las siguiente $N$ líneas contienen dos enteros $x_i$ y $y_i$ ($0 \lt x_i \lt w, 0 \lt y_i \lt l$) – las coordenadas de la i-ésima botella. No dos botellas están localizadas sobre el mismo punto.

La última línea de la entrada contiene dos enteros $x_r$ y $y_r$ ($0 \lt x_r \lt w, 0 \lt y_r \lt l$) – las coordenadas iniciales del robot. El robot no está localizado en un mismo punto de una botella.

Output

Escribe la longitud de la ruta más corta del robot para recoger todas las botellas. Tu respuesta no debe diferir en más de $10^{-6}$ de la respuesta correcta.

Sample test(s)

Input
3 4 2 1 1 2 3 2 1
Output
5.60555127546399