#include <iostream>
#include <vector>
#include <map>
#include <cmath>

using namespace std;

int plafon(int a, int llim, int ulim){
    if(a < llim){
        a = llim;
    }else if(a > ulim){
        a = ulim;
    }

    return a;
}

int main()
{
    long broj_takmicara;
    int broj_poznanstva;
    vector<pair<int, int>> poznanstva;

    map<int, int> broj_poznanstva_takmicara;
    map<int, int> druzeljubivost;

    int najmanjadruzeljubivost;

    //cout << "unesi broj takmicara" << endl;
    cin >> broj_takmicara;

    //cout << "unesi broj parova poznanika medju takmicarima" << endl;
    cin >> broj_poznanstva;

    broj_takmicara = plafon(abs(broj_takmicara), 1, 100000);
    broj_poznanstva = plafon(abs(broj_poznanstva), 1, 100000);


    for(int i = 0; i < broj_takmicara; i++){
        int takmicar = i + 1;
        int druzeljubivost_t;

        broj_poznanstva_takmicara[takmicar] = 0;

        //cout << "unesi druzeljubivost takmicara " << takmicar << endl;

        cin >> druzeljubivost_t;

        int dgranica = -(pow(10, 9));
        int ggranica = pow(10, 9);

        druzeljubivost_t = plafon(druzeljubivost_t, dgranica, ggranica);
        pair<int, int> par = pair<int, int>(takmicar, druzeljubivost_t);

        druzeljubivost.insert(par);
    }


    for(int i = 0; i < broj_poznanstva; i++){

        int clan1;
        int clan2;

        do{
           // cout << "unesi prvog clana poznanstva " << i + 1 << endl;

            cin >> clan1;

            //cout << "unesi drugog clana poznanstva " << i + 1 << endl;

            cin >> clan2;

            clan1 = plafon(abs(clan1),1, broj_takmicara);
            clan2 = plafon(abs(clan2), 1, broj_takmicara);

            if(clan1 == clan2){
               // cout << "poznanstvo se ne moze sastojati od para iste osobe!!!" << endl;

                cout << "probaj opet" << endl;
            }
        }while(clan1 == clan2);


        pair<int, int> p = pair<int, int>(clan1, clan2);

        if(poznanstva.size() == 0){
            poznanstva.push_back(p);
        }else{

            bool flag = true;

            for(auto it : poznanstva){
                if (it == p){
                    //cout << "ovo poznanstvo vec posotoji, probaj opet" << endl;
                    flag = false;
                    i--;
                }
            }

            if(flag == true){
               poznanstva.push_back(p);
            }
        }
    }

    for(auto it : poznanstva){
        broj_poznanstva_takmicara[it.first] += 1;
        broj_poznanstva_takmicara[it.second] += 1;
    }

    najmanjadruzeljubivost = druzeljubivost[1];

    for (auto it : druzeljubivost){
        if (it.second < najmanjadruzeljubivost){
            najmanjadruzeljubivost = it.second;
        }
    }

    int ukupna_sreca;

    if(najmanjadruzeljubivost < 0){
        for (auto it : druzeljubivost){
            ukupna_sreca += it.second * (0-broj_poznanstva_takmicara[it.first]);
        }
    }else if(najmanjadruzeljubivost >= 0){
        for (auto it : druzeljubivost){
            ukupna_sreca += it.second * (broj_poznanstva_takmicara[it.first]);
        }
    }

    cout << "UKUPNA SRECA JE: " << ukupna_sreca << endl;

    return 0;
}