def dist(a, b) -> float: return abs(a[0] - b[0]) + abs(a[1] - b[1]) def total_weight(mask): res = 0 for i in range(N): if mask & (1 << i): res += ps[i][1] return res INF = 1 << 60 SX, SY = map(int, input().split()) N = int(input()) ps = [] for _ in range(N): a = input().split() X, Y, W = int(a[0]), int(a[1]), float(a[2]) ps.append(((X, Y), W)) dp = [[INF] * N for _ in range(1 << N)] bit_all = (1 << N) - 1 t = (total_weight(bit_all) + 100) / 120 for i in range(N): d = dist((SX, SY), ps[i][0]) dp[1 << i][i]= d * t + ps[i][1] for i in range(1 << N): for j in range(N): # 最後に訪問した地点 if ~i & (1 << j): continue if dp[i][j] == INF: continue t = (total_weight(~i & bit_all) + 100) / 120 for k in range(N): # 次に向かう地点 if i & (1 << k): continue d = dist(ps[j][0], ps[k][0]) ni = i | (1 << k) dp[ni][k] = min(dp[ni][k], dp[i][j] + d * t + ps[k][1]) ans = INF for i in range(N): cost = dp[bit_all][i] + dist(ps[i][0], (SX, SY)) * (100 / 120) ans = min(ans, cost) print(ans)