#include <bits/stdc++.h>
using namespace std;
template <typename T>
void read(T &x) {
  x = 0;
  char c = getchar();
  bool p = 0;
  while (c < '0' || c > '9') {
    if (c == '-') p = 1;
    c = getchar();
  }
  while (c >= '0' && c <= '9') {
    x = (x << 3) + (x << 1) + (c ^ 48);
    c = getchar();
  }
}
const int N = 300005;
const long long INF = 1000000000000000000;
int n, m;
int head[N], cur[N], pnt[N << 1], nxt[N << 1], E = 0;
long long weight[N << 1];
int dep[N];
long long Hina = 0;
queue<int> q;
void add_edge(int a, int b, long long c) {
  pnt[E] = b;
  nxt[E] = head[a];
  weight[E] = c;
  head[a] = E++;
}
bool bfs(int s, int t) {
  while (!q.empty()) q.pop();
  memset(dep, -1, sizeof(dep));
  for (int i = 0; i <= n + m + 1; ++i) cur[i] = head[i];
  dep[s] = 0;
  q.push(s);
  while (!q.empty()) {
    int u = q.front();
    q.pop();
    for (int i = head[u]; i != -1; i = nxt[i]) {
      int v = pnt[i];
      if (dep[v] == -1 && weight[i]) {
        dep[v] = dep[u] + 1;
        q.push(v);
      }
    }
  }
  return dep[t] != -1;
}
long long dfs(int u, int t, long long limit) {
  if (!limit || u == t) return limit;
  long long sum = 0, f;
  for (int i = cur[u]; i != -1; i = nxt[i]) {
    cur[u] = i;
    int v = pnt[i];
    if (dep[v] == dep[u] + 1 && (f = dfs(v, t, min(weight[i], limit)))) {
      weight[i] -= f;
      weight[i ^ 1] += f;
      sum += f;
      limit -= f;
      if (!limit) break;
    }
  }
  return sum;
}
long long dinic(int s, int t) {
  long long ans = 0;
  while (bfs(s, t)) {
    ans += dfs(s, t, INF);
  }
  return ans;
}
int main() {
  memset(head, -1, sizeof(head));
  read(n), read(m);
  for (int i = 1, k; i <= n; ++i) {
    read(k);
    add_edge(i, n + m + 1, k);
    add_edge(n + m + 1, i, 0);
  }
  for (int i = 1, a, b, c; i <= m; ++i) {
    read(a), read(b), read(c);
    Hina += c;
    add_edge(0, i + n, c);
    add_edge(i + n, 0, 0);
    add_edge(i + n, a, INF);
    add_edge(a, i + n, 0);
    add_edge(i + n, b, INF);
    add_edge(b, i + n, 0);
  }
  printf("%lld\n", Hina - dinic(0, n + m + 1));
  return 0;
}
