#include <iostream>
#include<algorithm>
#include<set>
#include<vector>
using namespace std;
const int N=1e5+10;
int a[N],f[N];
long long sum=0;
set<int>b;
vector<int>c[N],d;
bool cmp(int x,int y)
{
return x>y;
}
int find(int x)
{
if(f[x] != x)
f[x] = find(f[x]);
return f[x];
}
int main()
{
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>a[i];
f[i]=i;
}
for(int i=1;i<=m;i++)
{
int x,y;
cin>>x>>y;
int fx = find(x);
int fy = find(y);
if(fx != fy) f[fx] = fy;
}
for(int i=1;i<=n;i++)
{
if(b.find(find(i))==b.end())
{
b.insert(f[i]);
}
c[f[i]].push_back(a[i]);
}
for(int it:b)
{
sort(c[it].begin(),c[it].end(),cmp);
d.push_back(c[it][0]);
}
sort(d.begin(),d.end());
for(int i=1;i<d.size();i++)
{
sum+=d[i];
}
cout<<sum;
}
// 64 位输出请用 printf("%lld")