#include<iostream>
#include<algorithm>
#include<stack>
using namespace std;

int n,m,a[100],x[100][100],p,q,v,w,y[100],r;
stack<int>S;

void dfs(){
	for(int i=1;i<=n;i++){
		if(y[i]==0){
			if(S.size()>=1){
				if(x[S.top()][i]==0){goto E;}
			}
			S.push(i);
			y[S.top()]=1;
			v+=a[S.top()];
			w=max(v,w);
			r++;
			dfs();
		}
		E:;
	}
	if(S.size()>=1){
		v-=a[S.top()];
		y[S.top()]=0;
		S.pop();
		r--;
	}
	return;
}

int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
	}
	for(int i=1;i<=m;i++){
		cin>>p>>q;
		x[p][q]=1;
		x[q][p]=1;
	}
	dfs();
	cout<<w<<endl;
	return 0;
}