#include <bits/stdc++.h>
using namespace std;
void read_file(bool outToFile = true) {}
int n, m, K;
int G[(18)][(18)];
int A[(18)];
long long dp[1 << (18)][(18)];
int main() {
  read_file();
  while (cin >> n >> m >> K) {
    for (int i = 0; i < n; i++) cin >> A[i];
    memset(G, 0, sizeof G);
    for (int i = 0, x, y; i < K; i++) cin >> x >> y, x--, y--, cin >> G[x][y];
    memset(dp, 0, sizeof dp);
    for (int i = 0; i < n; i++) dp[1 << i][i] = A[i];
    for (int mask = 1; mask < (1 << n); mask++) {
      for (int last = 0; last < n; last++) {
        if (mask & (1 << last)) {
          for (int i = 0; i < n; i++) {
            if (!(mask & (1 << i))) {
              dp[mask | (1 << i)][i] = max(dp[mask][last] + G[last][i] + A[i],
                                           dp[mask | (1 << i)][i]);
            }
          }
        }
      }
    }
    long long ans = 0;
    for (int mask = 0; mask < (1 << n); mask++) {
      if (__builtin_popcount(mask) == m) {
        for (int last = 0; last < n; last++) {
          if (mask & (1 << last)) ans = max(ans, dp[mask][last]);
        }
      }
    }
    cout << ans << endl;
  }
}
