#include <bits/stdc++.h>

using namespace std;

struct cvor {

    public:
        int64_t d;
        vector<uint32_t> veze;
        vector<uint16_t> prijatelji;
        cvor(int64_t dd) {
            d = dd;
            veze = vector<uint32_t>(0);
            prijatelji = vector<uint16_t>(0);
        }
};

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    cerr.tie(0);

    uint32_t m, n;
    cin >> n >> m;
    vector<cvor> graf(n, cvor(0));
    vector<vector<bool>> b(n, vector<bool>(n, false));

    for(size_t i = 0; i < n; i++) {
        int64_t dobar;
        cin >> dobar;
        graf[i].d = dobar;
        graf[i].prijatelji = vector<uint16_t>(n, 0);
    }

    for(size_t i = 0; i < m; i++) {
        uint32_t k, j;
        cin >> k >> j;
        graf[k - 1].veze.push_back(j - 1);
        graf[j - 1].veze.push_back(k - 1);
    }

    for(size_t j = 0; j < graf.size(); j++)
    {
        if(graf[j].d == 0) continue;

        for(size_t i = 0; i < graf[j].veze.size(); i++)
        {
            if(!(b[j][graf[j].veze[i]])) {
                if(graf[j].d > 0) {
                    if(graf[graf[j].veze[i]].d >= 0) {
                        graf[j].prijatelji[i] = 1;
                        graf[graf[j].veze[i]].prijatelji[j] = 1;
                    } else {
                        if(abs(graf[j].d) >= abs(graf[graf[j].veze[i]].d)) {
                            graf[j].prijatelji[i] = 1;
                            graf[graf[j].veze[i]].prijatelji[j] = 1;
                        } else {
                            graf[j].prijatelji[i] = 2;
                            graf[graf[j].veze[i]].prijatelji[j] = 2;
                        }
                    }
                    b[j][graf[j].veze[i]] = true;
                    b[graf[j].veze[i]][j] = true;
                }
                else
                {
                    if(graf[graf[j].veze[i]].d <= 0) {
                        graf[j].prijatelji[i] = 2;
                        graf[graf[j].veze[i]].prijatelji[j] = 2;
                    } else {
                        if(abs(graf[j].d) >= abs(graf[graf[j].veze[i]].d)) {
                            graf[j].prijatelji[i] = 2;
                            graf[graf[j].veze[i]].prijatelji[j] = 2;
                        } else {
                            graf[j].prijatelji[i] = 1;
                            graf[graf[j].veze[i]].prijatelji[j] = 1;
                        }
                    }
                    b[j][graf[j].veze[i]] = true;
                    b[graf[j].veze[i]][j] = true;
                }
            }
        }
    }

    int64_t r = 0;
    for(cvor c : graf)
    {
        int64_t p = 0;
        int64_t np = 0;
        for(auto x : c.prijatelji)
        {
            if(x == 1) p++;
            else if(x == 2) np++;
        }
        r += c.d * (p - np);
    }

    cout << r << '\n';

    cout.flush();
    return 0;
}