#include <bits/stdc++.h>
using namespace std;
const int N = 100000;
const int M = 100000;
int n, m, tot, i, vis[N + 1], ma[2 * M + 1][3], a[N + 1], first[N + 1], x, y;
long long ans;
void add(int x, int y) {
  tot++;
  ma[tot][1] = y;
  ma[tot][2] = first[x];
  first[x] = tot;
}
void dfs(int x) {
  for (int i = first[x]; i; i = ma[i][2])
    if (!vis[ma[i][1]]) {
      vis[ma[i][1]] = true;
      m = min(a[ma[i][1]], m);
      dfs(ma[i][1]);
    }
}
int main() {
  scanf("%d%d", &n, &m);
  for (i = 1; i <= n; i++) scanf("%d", a + i);
  for (i = 1; i <= m; i++) {
    scanf("%d%d", &x, &y);
    add(x, y);
    add(y, x);
  }
  for (i = 1; i <= n; i++)
    if (!vis[i]) {
      vis[i] = true;
      m = a[i];
      dfs(i);
      ans += m;
    }
  printf("%lld", ans);
  return 0;
}
