#include using namespace std; double dp[1 << 15][15], w[1 << 15]; int main() { int X_0, Y_0, N; cin >> X_0 >> Y_0 >> N; vector X(N + 2), Y(N + 2); vector W(N + 2); double total = 0; for (int i = 1; i <= N; i++) { cin >> X[i] >> Y[i] >> W[i]; X[i] -= X_0; Y[i] -= Y_0; total += W[i]; } X[N + 1] = 0; Y[N + 1] = 0; auto t = [&](int i, int j, double w) { int dist = abs(X[i] - X[j]) + abs(Y[i] - Y[j]); return dist * (w + 100) / 120; }; for (int bit = 0; bit < (1 << (N + 2)); bit++) { for (int i = 0; i < N + 2; i++) { dp[bit][i] = 1e30; if (bit & (1 << i)) w[bit] += W[i]; } w[bit] = total - w[bit]; } dp[1][0] = 0; for (int bit = 0; bit < (1 << (N + 2)); bit++) { for (int i = 0; i < N + 2; i++) { if (bit & (1 << i)) { int mask = bit ^ (1 << i); for (int j = 0; j < N + 2; j++) { if (mask & (1 << j)) { dp[bit][i] = min(dp[bit][i], dp[mask][j] + t(j, i, w[mask])); } } } } } cout << fixed << setprecision(10) << dp[(1 << (N + 2)) - 1][N + 1] + total << endl; }