import sys from types import GeneratorType def bootstrap(f, stack=[]): def wrappedfunc(*args, **kwargs): if stack: return f(*args, **kwargs) to = f(*args, **kwargs) while True: if type(to) is GeneratorType: stack.append(to) to = next(to) else: stack.pop() if not stack: break to = stack[-1].send(to) return to return wrappedfunc global vus vus = set() @bootstrap def dfs(voisins, r, cc): cc.add(r) vus.add(r) for v in voisins[r]: if v not in vus: yield dfs(voisins, v, cc) yield cc def main(): [n, k] = [int(i) for i in input().split()] a = [int(i) for i in input().split()] couples = [[int(i) for i in input().split()] for _ in range(k)] couples += [(j, i) for (i, j) in couples] # On créé les set() d'arêtes voisins = { i: set() for i in range(1, n+1) } for (i, j) in couples: voisins[i].add(j) voisins[j].add(i) ccs = [dfs(voisins, i, set()) for i in range(1, n+1) if i not in vus] return sum([min([a[i-1] for i in cc]) for cc in ccs]) print(main())