#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
#define For(i,n,k) for(int i=(n);i<(k);i++)
#define ALL(a)  (a).begin(),(a).end()
ll ans=0;
void Main(){
    int sx,sy,gx,gy,n;
    cin >> sx >> sy >> gx >> gy >> n;
    vector<int> x(n+2),y(n+2);
    vector<double> r(n+2,0);
    For(i,1,n+1) cin >> x[i] >> y[i] >> r[i];
    x[0] = sx;
    x[n+1] = gx;
    y[0] = sy;
    y[n+1] = gy;
    vector<double> dist(n+2,1e10);
    vector<bool> flag(n+2,false);
    dist[0] = 0;
    flag[0] = true;
    n += 2;
    int now = 0;
    For(_,0,n-1){
        int next = -1;
        double nextdist = 1e10;
        For(i,0,n){
            dist[i] = min(dist[i],dist[now] + max(hypot(x[i] - x[now], y[i] - y[now]) - (r[i] + r[now]), 0.0));
            if(!flag[i]){
                if(nextdist > dist[i]){
                    next = i;
                    nextdist = dist[i];
                }
            }
        }
        //For(i,0,n) cout << dist[i] << " \n"[i==n-1];
        now = next;
        flag[now]=true;
    }
    cout << fixed << setprecision(12) << dist[n-1] << endl;
}
int main(){
    Main();
    /*
    東方風神録は神が出てくるので当然神ゲー
    */
    return 0;
}