def repr(uf, i): if uf[i] == i: return i uf[i] = repr(uf, uf[i]) return uf[i] def union(uf, val, i, j): ri = repr(uf, i) rj = repr(uf, j) uf[rj] = ri val[ri] = val[rj] = min(val[ri], val[rj]) def main(): [n, k] = [int(i) for i in input().split()] a = [int(i) for i in input().split()] couples = [[int(i)-1 for i in input().split()] for _ in range(k)] uf = [i for i in range(n)] val = [a[i] for i in range(n)] for (i, j) in couples: ri = repr(uf, i) rj = repr(uf, j) if ri != rj: union(uf, val, i, j) mini = 0 for i in range(n): if repr(uf, i) == i: mini += val[i] return mini print(main())