#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <vector>
using namespace std;
#define N 400020
#define M 200020
int fst[N], nxt[M], vv[M], cost[M], e;
void init() {
memset(fst, -1, sizeof fst);
e = 0;
}
void add(int u, int v, int c) {
vv[e] = v, cost[e] = c, nxt[e] = fst[u], fst[u] = e++;
}
int n, w[N], sz[N];
int val[N];
vector<int> son[N];
double ans;
void dfs(int u, int p) {
sz[u] = 1;
w[u] = 0;
for(int i = fst[u]; ~i; i = nxt[i]) {
int v = vv[i];
int c = cost[i];
if(v == p) continue;
dfs(v, u);
son[u].push_back(v);
sz[u] += sz[v];
val[v] = c;
w[v] += c;
w[u] += w[v];
}
}
bool cmp(int i, int j) {
return 1LL * w[i] * sz[j] < 1LL * w[j] * sz[i];
}
void dfs2(int u, int p) {
int cnt = 0;
for(int i = 0; i < son[u].size(); ++i) {
int v = son[u][i];
cnt += sz[v];
ans += sz[v] * val[v];
ans += 1LL * (sz[u] - cnt - 1) * w[v] * 2;
dfs2(v, u);
}
}
int main() {
scanf("%d", &n);
init();
for(int i = 1; i < n; ++i) {
int u, v, c;
scanf("%d%d%d", &u, &v, &c);
add(u, v, c);
add(v, u, c);
}
dfs(1, -1);
for(int i = 1; i <= n; ++i) {
sort(son[i].begin(), son[i].end(), cmp);
}
dfs2(1, -1);
printf("%.12lf\n", ans / (n - 1));
return 0;
}