Russian Translation Available

You are given a weighted graph with N vertices and M edges. Find the total weight of its maximum spanning tree.

Input

The first line contains one integer T denoting the number of test cases.
Each test case starts with a line containing 2 space-separated integer: N and M. Each of the following M lines contain description of one edge: three different space-separated integers: a,  b and c. a and b are different and from 1 to N each and denote numbers of vertices that are connected by this edge. c denotes weight of this edge.

Output

For each test case output one integer - the total weight of its maximum spanning tree.

Constraints
1 ≤ T ≤ 20
1 ≤ N ≤ 5000
1 ≤ M ≤ 100 000
1 ≤ c ≤ 10 000

SAMPLE INPUT
1
3 3
1 2 2
2 3 3
1 3 4

SAMPLE OUTPUT
7

Difficulty: EASY

Solutions:
import collections
import heapq

def mst(graph, n):
	total = 0
	seen = set([1])
	q = graph[1]
	heapq.heapify(q)
	while q:
		cost, node = heapq.heappop(q)
		if node in seen: continue
		seen.add(node)
		total += cost
		if len(seen) == n: break
		for child in graph[node]:
			heapq.heappush(q, child)
	return total

def solve(n, mss):
	graph = collections.defaultdict(list)
	for a, b, cost in mss:
		graph[a].append((-cost, b))
		graph[b].append((-cost, a))
	mini = mst(graph, n)
	return -mini

if __name__ == '__main__':
	for _ in range(int(input())):
		n, m = list(map(int, input().split()))
		mss = [list(map(int, input().split())) for _ in range(m)]
		print(solve(n, mss))