#include <iostream>
//#include <iomanip>
//#include <cmath>
#include <algorithm>
//#include <string>
#include <vector>
//#include <ctime>
//#include <cstdlib>
//#include <mycpp.h>

using namespace std;

int Sreca(int D[],int Poz[],int P[][2], int n, int m, bool b, int i,int PN[][2])
{
	int T[n][2];
	for(int i=0;i<n;i++)
	{
		T[i][0]=PN[i][0];
		T[i][1]=PN[i][1];
	}
	if(!b)
	{
		PN[P[i][0]][0]--;
		PN[P[i][0]][1]++;
		PN[P[i][1]][0]--;
		PN[P[i][1]][1]++;
	}
	if(i==m-1)
	{
		int S=0;
		for(int i=0;i<n;i++)
			S+=(D[i]*(PN[i][0]-PN[i][1]));
		return S;
	}
	else
	{
		int S1=Sreca(D,Poz,P,n,m,true,i+1,PN);
		int S2=Sreca(D,Poz,P,n,m,false,i+1,T);
		return max(S1,S2);
	}
	
}

int main()
{
	int n,m;
	cin>>n>>m;
	int Druz[n];
	bool poz=true;
	for(int i=0;i<n;i++)
	{
		cin>>Druz[i];
		if(poz && Druz[i]<0)
			poz=false;
	}
	int Poznanika[n]={0};
	int Poznanici[m][2];
	for(int i=0;i<m;i++)
	{
		cin>>Poznanici[i][0]>>Poznanici[i][1];
		Poznanici[i][0]--;
		Poznanici[i][1]--;
		Poznanika[Poznanici[i][0]]++;
		Poznanika[Poznanici[i][1]]++;
	}
	if(poz)
	{
		int S=0;
		for(int i=0;i<n;i++)
			S+=(Druz[i]*Poznanika[i]);
		cout<<S;
	}
	else
	{
		int brP[n][2];
		int brN[n][2];
		for(int i=0;i<n;i++)
		{
			brP[i][0]=Poznanika[i];
			brP[i][1]=0;
			brN[i][0]=Poznanika[i];
			brN[i][1]=0;
		}
		int S1=Sreca(Druz,Poznanika,Poznanici,n,m,true,0,brP);
		int S2=Sreca(Druz,Poznanika,Poznanici,n,m,false,0,brP);
		cout<<max(S1,S2);
	}
		
}