#include<bits/stdc++.h>
#define get getchar()
using namespace std;
inline int read() {
int x=0,f=1;char ch=get;
while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=get;}
while(ch>='0'&&ch<='9')x=(x<<1)+(x<<3)+(ch^'0'),ch=get;
return x*f;
}
int n,m;
int a[500],maxn;
bool b[500],s[500][500];
void dfs(int op,int ans) {
int u=0;
b[op]=1;
for(int i=1;i<=n;i++) {
if(s[op][i]&&!b[i]) {
dfs(i,ans+a[i]);
u++;
}
}
if(!u)maxn=max(maxn,ans);
}
int main() {
n=read(),m=read();
for(int i=1;i<=n;i++)a[i]=read();
for(int i=1;i<=m;i++) {
int o=read(),p=read();
s[o][p]=s[p][o]=1;
}
for(int i=1;i<=n;i++)
if(!b[i]) dfs(i,a[i]);
printf("%d\n",maxn);
return 0;
}