#include #define rep(i, a) for (int i = 0; i < (a); i++) #define rep2(i, a, b) for (int i = (a); i < (b); i++) #define repr(i, a) for (int i = (a) - 1; i >= 0; i--) #define repr2(i, a, b) for (int i = (b) - 1; i >= (a); i--) using namespace std; typedef long long ll; const ll inf = 1e9; const ll mod = 1e9 + 7; double dp[1 << 14][14]; int main() { double x0, y0; cin >> x0 >> y0; int N; cin >> N; vector X(N + 1), Y(N + 1), W(N + 1); rep (i, N) cin >> X[i] >> Y[i] >> W[i]; X[N] = x0; Y[N] = y0; W[N] = 0; N++; fill_n((double *)dp, sizeof(dp) / sizeof(dp[0][0]), inf); dp[0][N - 1] = 0; rep (i, 1 << N) { double w = 0; rep (j, N) { if (!(i & 1 << j)) { w += W[j]; } } rep (j, N) { rep (k, N) { if (!(i & 1 << k)) { double dist = abs(X[k] - X[j]) + abs(Y[k] - Y[j]); double cost = (w + 100) / 120; dp[i | 1 << k][k] = min(dp[i | 1 << k][k], dp[i][j] + dist * cost + W[k]); } } } } double ans = dp[(1 << N) - 1][N - 1]; printf("%.20f\n", ans); return 0; }