#include <bits/stdc++.h>
using namespace std;
int n, m, k;
long long edg[20][20], sat[20], dp[600000][20];
long long brute(int stt, int lst, int tot) {
  if (tot >= m) return 0;
  if (dp[stt][lst] > -1) return dp[stt][lst];
  long long mx = 0;
  for (int i = 1; i <= n; i++) {
    if (!(stt & (1 << i))) {
      mx = max(mx, sat[i] + edg[lst][i] + brute(stt | (1 << i), i, tot + 1));
    }
  }
  return dp[stt][lst] = mx;
}
int main() {
  int u, v;
  long long w;
  scanf("%d %d %d", &n, &m, &k);
  for (int i = 1; i <= n; i++) {
    scanf("%I64d", &sat[i]);
  }
  memset(edg, 0ll, sizeof(edg));
  memset(dp, -1ll, sizeof(dp));
  for (int i = 0; i < k; i++) {
    scanf("%d %d %I64d", &u, &v, &w);
    edg[u][v] = w;
  }
  printf("%I64d", brute(0, 0, 0));
  return 0;
}
