#include <iomanip>
#include <iostream>
#include <math.h>
#include <vector>
#include <sstream>
using namespace std;
bool svi_poz = false;
bool svi_neg = false;
vector<int> ukupne_srece;
vector<int> n;
int pom = 0;
static double sreca(int druzeljubivost, int prijatelji, int neprijatelji)
{
	return (druzeljubivost * (prijatelji - neprijatelji));
}
static void svi(vector<int> druzeljubivost, int br_uc)
{
	int brojac_poz = 0;
	int brojac_neg = 0;
	for (int i = 0; i < br_uc; i++)
	{
		if (druzeljubivost[i] >= 0)
		{
			brojac_poz++;
		}
		else
		{
			brojac_neg++;
		}
	}
	if (brojac_neg == br_uc)
	{
		svi_neg = true;
	}
	else if (brojac_poz == br_uc)
	{
		svi_poz = true;
	}
}
static void rekurzija(vector<int> druzeljubivost, vector<int> br_poznanstva, vector<int> poznanstvax, vector<int> poznanstvay, int br_uc, int poznanici, int brj)
{
	while (brj != poznanici)
	{
		for (int i = 0; i < br_uc; i++)
		{
			ukupne_srece[pom] += sreca(druzeljubivost[i], br_poznanstva[i] - n[i], 0 + n[i]);
		}
		pom++;
		n[poznanstvax[brj] - 1]++;
		n[poznanstvay[brj] - 1]++;
		rekurzija(druzeljubivost, br_poznanstva, poznanstvax, poznanstvay, br_uc, poznanici, brj + 1);
		n[poznanstvax[brj] - 1]--;
		n[poznanstvay[brj] - 1]--;
		brj++;
	}
	return;
}
int main()
{
	int br_uc, poznanici, x, y, ukupna_sreca;
	vector<int> druzeljubivost, br_poznanstva, poznanstvax, poznanstvay;
	cin >> br_uc >> poznanici;
	n.resize(br_uc);
	druzeljubivost.resize(br_uc);
	br_poznanstva.resize(br_uc);
	poznanstvax.resize(poznanici);
	poznanstvay.resize(poznanici);
	ukupne_srece.resize((pow(2, poznanici)));
	ukupna_sreca = 0;
	for (int i = 0; i < br_uc; i++)
	{
		cin >> druzeljubivost[i];
	}
	for (int i = 0; i < poznanici; i++)
	{
		cin >> x >> y;
		poznanstvax[i] = x;
		poznanstvay[i] = y;
		for (int j = 0; j < br_uc; j++)
		{
			if (x == j + 1)
			{
				br_poznanstva[j]++;
			}
			if (y == j + 1)
			{
				br_poznanstva[j]++;
			}
		}
	}
	svi(druzeljubivost, br_uc);
	if (svi_neg)
	{
		for (int i = 0; i < br_uc; i++)
		{
			ukupna_sreca += sreca(druzeljubivost[i], 0, br_poznanstva[i]);
		}
	}
	else if(svi_poz)
	{
		for (int i = 0; i < br_uc; i++)
		{
			ukupna_sreca += sreca(druzeljubivost[i], br_poznanstva[i], 0);
		}
	}
	else
	{
		rekurzija(druzeljubivost, br_poznanstva, poznanstvax, poznanstvay, br_uc, poznanici, 0);
		ukupna_sreca = abs(ukupne_srece[0]);
		for (int i = 0; i < ukupne_srece.size(); i++)
		{
			if (ukupna_sreca < abs(ukupne_srece[i]))
			{
				ukupna_sreca = abs(ukupne_srece[i]);
			}
		}
	}
	cout << ukupna_sreca;
}