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()