#include <bits/stdc++.h>
const int N = 262150;
int n, m, k, cnt;
int x, y, z;
long long a[20], gx[20][20];
long long dp[N][20], ans;
inline long long max(long long u, long long v) { return u > v ? u : v; }
int main() {
  scanf("%d%d%d", &n, &m, &k);
  for (int i = 0; i < n; i++) scanf("%I64d", &a[i]);
  for (int i = 1; i <= k; i++) {
    scanf("%d%d%d", &x, &y, &z);
    --x;
    --y;
    gx[x][y] = z;
  }
  for (int i = 0; i < n; i++) dp[1 << i][i] = a[i];
  for (int i = 0; i < (1 << n); i++) {
    cnt = 0;
    for (int j = 0; j < n; ++j)
      if (i & (1 << j)) {
        ++cnt;
        for (int k = 0; k < n; ++k)
          if ((i & (1 << k)) == 0) {
            dp[i | (1 << k)][k] =
                max(dp[i | (1 << k)][k], dp[i][j] + a[k] + gx[j][k]);
          }
      }
    if (cnt == m)
      for (int j = 0; j < n; ++j)
        if (i & (1 << j)) {
          ans = max(ans, dp[i][j]);
        }
  }
  printf("%I64d\n", ans);
}
