#include <bits/stdc++.h>
using namespace std;
long long n, m, k;
long long v[20];
long long adj[20][20];
long long mem[20][300000];
long long tsp(long long x, long long bm) {
  if (mem[x][bm] != -1) return mem[x][bm];
  long long cmax = 0;
  for (long long i = 0; i < n; i++) {
    if (i == x) continue;
    if (bm & (1 << i)) {
      cmax = max(cmax, tsp(i, bm ^ (1 << x)) + adj[i][x]);
    }
  }
  return mem[x][bm] = cmax + v[x];
}
int main() {
  scanf("%I64d%I64d%I64d", &n, &m, &k);
  for (long long i = 0; i < n; i++) {
    scanf("%I64d", &v[i]);
  }
  for (long long i = 0; i < k; i++) {
    long long a, b, c;
    scanf("%I64d%I64d%I64d", &a, &b, &c);
    a--, b--;
    adj[a][b] = c;
  }
  memset(mem, -1, sizeof(mem));
  for (long long i = 0; i < n; i++) mem[i][1 << i] = v[i];
  long long l = 1 << n;
  long long ans = 0;
  for (long long bm = 0; bm < l; bm++) {
    long long cb = 0;
    for (long long i = 0; i < n; i++) {
      if (bm & (1 << i)) cb++;
    }
    if (cb == m) {
      for (long long i = 0; i < n; i++) {
        if (bm & (1 << i)) ans = max(ans, tsp(i, bm));
      }
    }
  }
  printf("%I64d", ans);
}
