#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
#define maxn 1604
#define maxm 60002
#define inf 0x3fffffff
#define s(a) ((a<<1)-1)
#define t(a) (a<<1)
int u[maxm],c[maxm],e[maxn],vis[maxn],v[maxm],ne[maxm];
int nn=1;
void add(int x,int y,int cc,int uu){
ne[++nn]=e[x],e[x]=nn,v[nn]=y,c[nn]=cc,u[nn]=uu;
}
int cost;
int phi;
int S,T;
int n,mm;
int tt;
int ff;
int zeng(int no,int m){
if(no==T)return cost+=phi*m,m;
vis[no]=ff;
int r=m,k;
for(int i=e[no];i&&r;i=ne[i])if(!c[i]&&u[i]&&ff!=vis[v[i]]){
k=zeng(v[i],min(r,u[i]));
r-=k;
u[i]-=k;
u[i^1]+=k;
}
return m-r;
}
bool modlab(){
int d=inf;
for(int i=1;i<=T;i++)if(ff==vis[i]){
for(int j=e[i];j;j=ne[j])if(u[j]&&ff!=vis[v[j]]&&c[j]<d)d=c[j];
}
if(d==inf)return 0;
for(int i=1;i<=T;i++)if(ff==vis[i]){
for(int j=e[i];j;j=ne[j])c[j]-=d,c[j^1]+=d;
}
phi+=d;
return 1;
}
int main(){
scanf("%d%d",&n,&mm);
S=(n<<1)+1;
T=S+1;
int a,b,z;
for(int i=1;i<=n;i++){
scanf("%d",&a);
add(S,s(i),a,1);
add(s(i),S,-a,0);
add(S,t(i),0,1);
add(t(i),S,0,0);
add(s(i),T,0,1);
add(T,s(i),0,0);
}
for(int i=1;i<=mm;i++){
scanf("%d%d%d",&a,&b,&z);
if(a>b)swap(a,b);
add(t(a),s(b),z,1);
add(s(b),t(a),-z,0);
}
do do ff++;
while(zeng(S,inf));
while(modlab());
cout<<cost;
}