#include <bits/stdc++.h>
using namespace std;
const int maxn = 18;
long long dp[1 << 18][maxn + 1];
long long num[maxn + 1];
long long grap[maxn + 1][maxn + 1];
int main() {
  int n, m;
  int k;
  scanf("%d %d %d", &n, &m, &k);
  int u, v;
  long long d;
  for (int i = 0; i < n; i++) {
    scanf("%I64d", &num[i]);
    dp[1 << i][i] = num[i];
  }
  for (int i = 0; i < k; i++) {
    scanf("%d %d %I64d", &u, &v, &d);
    u--;
    v--;
    grap[u][v] = d;
  }
  int state = 1 << n;
  int cnt;
  long long ans = 0;
  for (int i = 1; i < state; i++) {
    cnt = 0;
    for (int j = 0; j < n; j++) {
      if ((i & (1 << j)) == 0) continue;
      cnt++;
      for (int k = 0; k < n; k++) {
        if (i & (1 << k)) continue;
        dp[i | (1 << k)][k] =
            max(dp[i | (1 << k)][k], dp[i][j] + num[k] + grap[j][k]);
      }
    }
    if (cnt == m) {
      for (int j = 0; j < n; j++) {
        if ((i & (1 << j)) == 0) continue;
        ans = max(ans, dp[i][j]);
      }
    }
  }
  printf("%I64d\n", ans);
  return 0;
}
