INF = 1 << 30 points = [] x0, y0 = map(float, input().split()) points.append((x0, y0)) n = int(input()) w = [0.0] for _ in range(n): xi, yi, wi = map(float, input().split()) points.append((xi, yi)) w.append(wi) dp = [[INF for _ in range(n + 1)] for _ in range(1 << (n + 1))] dp[0][0] = 0 for mask in range(1 << (n + 1)): dpm = dp[mask] cnt = 0 for v in range(n + 1): if (mask >> v) & 1 == 0: cnt += w[v] for cur in range(n + 1): if dpm[cur] == INF: continue cx, cy = points[cur] for nxt in range(n + 1): if (mask >> nxt) & 1 != 0: continue nx, ny = points[nxt] cost = (abs(nx - cx) + abs(ny - cy)) * (cnt + 100) / 120 + w[nxt] dp[mask | (1 << nxt)][nxt] = min(dp[mask | (1 << nxt)][nxt], dp[mask][cur] + cost) print(dp[-1][0])