#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;
}