import sys
sys.setrecursionlimit(10**6)
from collections import defaultdict
class Graph:
def __init__(self,n):
self.v=n
self.d=defaultdict(lambda:[])
self.tc=[[-1 for i in range(n)] for i in range(n)] #To store weights for every i to j
self.tmp=[[0 for i in range(n)] for i in range(n)] #To store girven weight from i to j
def add_edge(self,u,v,w):
self.d[u-1].append(v-1)
self.d[v-1].append(u-1)
self.tmp[u-1][v-1]=self.tc[v-1][u-1]=w
def dfs(self,src,dst,wt):
self.tc[src][dst]=wt
self.tc[dst][src]=wt
for i in self.d[dst]:
if self.tc[src][i]==-1:
self.dfs(src,i,wt+self.tmp[dst][i])
def transclosure(self):
mod=10**9 +7
for i in range(self.v):
self.dfs(i,i,0)
# for i in self.tc:
# print(*i)
sume=0
for i in range(self.v):
sume=(sume+sum(self.tc[i][i+1:])%mod)%mod
return sume
def clear(self):
self.tc.clear()
self.d.clear()
for _ in range(int(input())):
n=int(input())
g=Graph(n)
for _ in range(n-1):
u,v,w =map(int,input().split())
g.add_edge(u,v,w)
#g.printf()
res=g.transclosure()
print(res)
g.clear()
aW1wb3J0IHN5cwpzeXMuc2V0cmVjdXJzaW9ubGltaXQoMTAqKjYpCmZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CgpjbGFzcyBHcmFwaDoKCWRlZiBfX2luaXRfXyhzZWxmLG4pOgoJCXNlbGYudj1uIAoJCXNlbGYuZD1kZWZhdWx0ZGljdChsYW1iZGE6W10pCgkJc2VsZi50Yz1bWy0xIGZvciBpIGluIHJhbmdlKG4pXSBmb3IgaSBpbiByYW5nZShuKV0gI1RvIHN0b3JlIHdlaWdodHMgZm9yIGV2ZXJ5IGkgdG8gagoJCXNlbGYudG1wPVtbMCBmb3IgaSBpbiByYW5nZShuKV0gZm9yIGkgaW4gcmFuZ2UobildICNUbyBzdG9yZSBnaXJ2ZW4gd2VpZ2h0IGZyb20gaSB0byBqCgoJZGVmIGFkZF9lZGdlKHNlbGYsdSx2LHcpOgoJCXNlbGYuZFt1LTFdLmFwcGVuZCh2LTEpCgkJc2VsZi5kW3YtMV0uYXBwZW5kKHUtMSkKCQlzZWxmLnRtcFt1LTFdW3YtMV09c2VsZi50Y1t2LTFdW3UtMV09dwoKCglkZWYgZGZzKHNlbGYsc3JjLGRzdCx3dCk6CgkJCgkJc2VsZi50Y1tzcmNdW2RzdF09d3QKCQlzZWxmLnRjW2RzdF1bc3JjXT13dAoKCQlmb3IgaSBpbiBzZWxmLmRbZHN0XToKCQkJaWYgc2VsZi50Y1tzcmNdW2ldPT0tMToKCQkJCXNlbGYuZGZzKHNyYyxpLHd0K3NlbGYudG1wW2RzdF1baV0pCgoKCWRlZiB0cmFuc2Nsb3N1cmUoc2VsZik6CgoJCW1vZD0xMCoqOSArNwoKCQlmb3IgaSBpbiByYW5nZShzZWxmLnYpOgoJCQlzZWxmLmRmcyhpLGksMCkKCgkJIyBmb3IgaSBpbiBzZWxmLnRjOgoJCSMgCXByaW50KCppKQoKCgkJc3VtZT0wCgkJCgkJZm9yIGkgaW4gcmFuZ2Uoc2VsZi52KToKCQkJc3VtZT0oc3VtZStzdW0oc2VsZi50Y1tpXVtpKzE6XSklbW9kKSVtb2QKCgkJcmV0dXJuIHN1bWUgCgoKCWRlZiBjbGVhcihzZWxmKToKCQlzZWxmLnRjLmNsZWFyKCkKCQlzZWxmLmQuY2xlYXIoKQoKCmZvciBfIGluIHJhbmdlKGludChpbnB1dCgpKSk6CgluPWludChpbnB1dCgpKQoJZz1HcmFwaChuKQoKCglmb3IgXyBpbiByYW5nZShuLTEpOgoJCXUsdix3ID1tYXAoaW50LGlucHV0KCkuc3BsaXQoKSkKCQlnLmFkZF9lZGdlKHUsdix3KQoKCSNnLnByaW50ZigpCglyZXM9Zy50cmFuc2Nsb3N1cmUoKQoJcHJpbnQocmVzKQoJZy5jbGVhcigp