#include #include #include using namespace std; const int mod = 1e9 + 7; int main() { int n; scanf("%d", &n); // vector g(n + 1); vector> e; for (int i = 0; i < n - 1; i++) { int u, v, c; scanf("%d%d%d", &u, &v, &c); e.push_back({u, v, c}); } vector p(n + 1); vector cnt(n + 1); auto find = [&](int u) { int v = u; while (v != p[v]) v = p[v]; while (u != p[u]) { int nu = p[u]; p[u] = v; u = nu; } return v; }; //assert(0); int ans = 0; for (int b = 0; b < 30; b++) { // printf("b = %d\n", b); for (int i = 1; i <= n; i++) p[i] = i, cnt[i] = 1; // assert(0); for (auto edge: e) { int u = edge[0], v = edge[1], c = edge[2]; // printf("u = %d, v = %d, c = %d\n", u, v, c); if (c & (1< vis(n + 1, 0); for (int i = 1; i <= n; i++) { int u = find(i); if (!vis[u]) { vis[u] = 1; long long c = cnt[u] * 1ll * (cnt[u] - 1) / 2; int add = (1<= mod) ans -= mod; } } } printf("%d\n", ans); return 0; }