Training Site
Sideways banner

Enshadowed

Input: Standard Input (stdin)
Output: Standard Output (stdout)
Memory limit: 100 megabytes
Time limit: 1.0 seconds

It's yet another sweltering day at the University of Canterbury. Roxy needs to get between her lectures, and wants to stay out of the sun as much as possible.

Luckily, there are some trees on campus providing delicious shade. The university keeps their grounds meticulously maintained, and the treetops are topiaried into perfect spheres. The shadows of the trees are thus all circular in shape. (The trunks of the trees also happen to be infinitesimally thin, thus casting no shadow). The campus grounds are famously flat, so assume all distances are on a flat 2D plane.

Given Roxy's position and destination, and the centers and radii of the shadows, output the minimum distance Roxy must travel in the sun to get to her lecture.

Input

The first line contains 4 space-separated numbers, x_R y_R x_L y_L, where (x_R, y_R) are Roxy's (Cartesian) coordinates and (x_L, y_L) are the coordinates of her destination. The second line contains a single integer N, the number of shadows. The following N lines each contain three space separated numbers, x_C y_C r, indicating there is a shadow centered at (x_C, y_C) with radius r.

Output

Output a single floating-point number, the minimum distance Roxy must travel in the sun. You must output the distance within a 10^{-4} error.

Constraints

  • -1000 \leq x_R, y_R, x_L, y_L, x_C, y_C \leq 1000
  • 0 \leq r \leq 1000
  • 1 \leq N \leq 500

Subtasks

  • Subtask 1 (+20%): N=1
  • Subtask 2 (+30%): N \leq 20
  • Subtask 3 (+50%): No further constraints.

Note

For students using C++, std::cout by default does not print floating-point numbers with enough precision to pass the test data. Instead use printf or set the precision manually with std::cout.precision().

  • Sample Input 1

    0.0 0.0 4.0 0.0
    1
    2.0 0.0 1.0
    

    Sample Output 1

    2.000000
    
  • Sample Input 2

    0.0 1.0 20.0 -6.0
    3
    -1.0 -2.0 1.0
    4.0 2.0 3.0
    7.0 -6.0 2.0
    

    Sample Output 2

    15.667109