import sys int1 = lambda x: int(x) - 1 # input = lambda: sys.stdin.buffer.readline() input = lambda: sys.stdin.readline().rstrip() ii = lambda: int(input()) i1 = lambda: int1(input()) mi = lambda: map(int, input().split()) mi1 = lambda: map(int1, input().split()) li = lambda: list(mi()) li1 = lambda: list(mi1()) lli = lambda n: [li() for _ in range(n)] INF = float("inf") mod = int(1e9 + 7) # mod = 998244353 n = ii() g = [list() for i in range(n)] for i in range(n - 1): a, b, c = mi() a, b = a - 1, b - 1 g[a].append((b, c)) g[b].append((a, c)) ans = 0 st = [] for j in range(30): used = [False] * n for i in range(n): if used[i]: continue st.append(i) used[i] = True cnt = 1 while st: cur = st.pop() for to, weight in g[cur]: if not used[to] and weight >> j & 1: st.append(to) used[to] = True cnt += 1 ans += cnt * (cnt - 1) % mod * (1 << j) % mod ans %= mod ans *= pow(2, mod - 2) ans %= mod print(ans)