#include<bits/stdc++.h>
#define ll long long
#define ull unsigned long long
#define pb push_back
#define mk make_pair
#define v_sort(x) sort(x.begin(),x.end())
#define v_gsort(x) sort(x.begin(),x.end(),greater<int>())
#define v_find(x,num) find(x.begin(),x.end(),num)
#define PI 3.14159265
#define MOD 998244353
#define MOD1 1000000007

using namespace std;

void Solve(){
  int n,m;
  cin>>n>>m;
  vector<ll>a(n+1);
  vector<pair<int,int>>notc,eq;
  map<int,int>con;
  for(int i=1;i<=n;i++) cin>>a[i];
  for(int i=0;i<m;i++) {
    int x,y;
    cin>>x>>y;
    if(a[x]>=0 && a[y]>=0) con[x]++,con[y]++;
    else if(a[x]<=0 && a[y]<=0) con[x]--,con[y]--;
    else notc.pb({x,y});
  }
  for(int i=0;i<notc.size();i++){
      int x=notc[i].first,y=notc[i].second;
      if(a[x]*(con[x]-1)+a[y]*(con[y]-1)>a[y]*(con[y]+1)+a[x]*(con[x]+1)) con[x]--,con[y]--;
      else if(a[x]*(con[x]-1)+a[y]*(con[y]-1)<a[y]*(con[y]+1)+a[x]*(con[x]+1)) con[x]++,con[y]++;
      else eq.pb({x,y});
  }
  for(int i=0;i<eq.size();i++){
    int x=eq[i].first,y=eq[i].second;
    if(a[x]*(con[x]-1)+a[y]*(con[y]-1)>a[y]*(con[y]+1)+a[x]*(con[x]+1)) con[x]--,con[y]--;
    else if(a[x]*(con[x]-1)+a[y]*(con[y]-1)<=a[y]*(con[y]+1)+a[x]*(con[x]+1)) con[x]++,con[y]++;
  }
  ll ans=0;
  for(int i=1;i<=n;i++) ans+=con[i]*a[i];
  cout<<ans;
}

int main(){
  ios::sync_with_stdio(false);
  cin.tie(NULL);
  int t=1;
//  cin>>t;
  while(t--){
    Solve();
  }
  return 0;
}