#include <bits/stdc++.h>

typedef long long lld;

struct covek{
    lld druz;
    int rb;
};

bool sortiraj(covek a, covek b){
    return std::abs(a.druz)>std::abs(b.druz);
}

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

    int n,m,x,y;

    std::cin >> n >> m;

    covek takm[n];
    std::vector<std::vector<int> > poznat(n, std::vector<int>());
    int** odnos = (int**) calloc(n,sizeof(int*));
    for(int i=0;i<n;++i){
        odnos[i] = (int*) calloc(n,sizeof(int));
    }

    for(int i=0;i<n;++i){
        takm[i] = {0,i};
        std::cin >> takm[i].druz;
    }

    for(int i=0;i<m;++i){
        std::cin >> x >> y;
        x--;
        y--;
        poznat.at(x).push_back(y);
        poznat.at(y).push_back(x);
    }

    std::sort(takm, takm+n, sortiraj);

    lld rez=0;
    int razlika,temp,idx;

    for(int i=0;i<n;++i){
        idx = takm[i].rb;
        razlika = 0;
        for(int j=0;j<poznat[idx].size();++j){
            if(odnos[idx][poznat[idx][j]]==0){
                temp = (takm[i].druz<0)?-1:1;
                odnos[idx][poznat[idx][j]]=temp;
                odnos[poznat[idx][j]][idx]=temp;
            }
            razlika+=odnos[idx][poznat[idx][j]];
        }
        rez+=takm[i].druz*razlika;
    }

    std::cout << rez;

    return 0;
}