from atcoder.dsu import DSU def main(): n, m = list(map(int, input().split())) A = list(map(int, input().split())) node = [[] for _ in range(n)] E = [] for _ in range(m): u, v = list(map(lambda x: int(x)-1, input().split())) node[u].append(v) node[v].append(u) E.append((A[u]+A[v], u, v)) ans = 0 X = [A[i] for i in range(n)] uf = DSU(n) E.sort(key = lambda x: -x[0]) for w, u, v in E: if uf.same(u, v): continue ui, vi = uf.leader(u), uf.leader(v) uf.merge(u, v) ans += A[u]+A[v]-min(X[ui], X[vi]) X[uf.leader(u)] = max(X[ui], X[vi]) return ans for _ in range(int(input())): print(main())