#include <bits/stdc++.h>
using namespace std;
const long long N = 2e5 + 10;
const long long M = 2e6 + 10;
const long long INF = 0x3f3f3f3f3f3f3f3f;
inline long long read() {
  char ch = getchar();
  long long x = 0, f = 1;
  while (ch < '0' || ch > '9') {
    if (ch == '-') f = -1;
    ch = getchar();
  }
  while (ch >= '0' && ch <= '9') {
    x = (x << 1) + (x << 3) - '0' + ch;
    ch = getchar();
  }
  return x * f;
}
long long s, t, n, m;
long long h[N], e[M], ne[M], idx;
long long w[M];
long long cur[N], gap[N], d[N];
void add(long long a, long long b, long long c) {
  e[idx] = b;
  w[idx] = c;
  ne[idx] = h[a];
  h[a] = idx++;
  e[idx] = a;
  w[idx] = 0;
  ne[idx] = h[b];
  h[b] = idx++;
}
void init(long long s, long long t) {
  queue<long long> q;
  d[t] = 1, gap[1]++;
  q.push(t);
  for (long long i = 0; i <= n + m + 1; i++) cur[i] = h[i];
  while (!q.empty()) {
    long long t = q.front();
    q.pop();
    for (long long i = h[t]; ~i; i = ne[i]) {
      long long j = e[i];
      if (!d[j]) {
        d[j] = d[t] + 1;
        gap[d[j]]++;
        q.push(j);
      }
    }
  }
}
long long dfs(long long u, long long t, long long flow) {
  if (u == t) return flow;
  long long flowed = 0;
  for (long long &i = cur[u]; ~i; i = ne[i]) {
    long long j = e[i];
    if (d[j] + 1 == d[u]) {
      long long tmp = dfs(j, t, min(flow, w[i]));
      flowed += tmp;
      flow -= tmp;
      w[i] -= tmp;
      w[i ^ 1] += tmp;
      if (!flow) return flowed;
    }
  }
  gap[d[u]]--;
  if (!gap[d[u]]) d[s] = n + m + 3;
  d[u]++;
  gap[d[u]]++;
  cur[u] = h[u];
  return flowed;
}
long long ISAP(long long s, long long t) {
  init(s, t);
  long long ret = 0;
  while (d[s] <= n + m + 2) {
    ret += dfs(s, t, INF);
  }
  return ret;
}
signed main() {
  n = read(), m = read();
  s = 0, t = n + m + 1;
  long long ans = 0;
  for (long long i = s; i <= t; i++) h[i] = -1;
  for (long long i = 1; i <= n; i++) {
    add(i, t, 1ll * read());
  }
  for (long long i = 1; i <= m; i++) {
    long long x = read(), y = read(), z = read();
    add(s, i + n, z);
    add(i + n, x, INF);
    add(i + n, y, INF);
    ans += z;
  }
  printf("%lld\n", ans - ISAP(s, t));
}
