#include <bits/stdc++.h>
using namespace std;
const int MAXN = 20;
const int X = 1 << MAXN;
int N, M, K;
long long a[MAXN];
long long p[MAXN][MAXN];
long long dp[MAXN][X + 5];
long long max(long long a, long long b) { return a > b ? a : b; }
int main() {
  scanf("%d %d %d", &N, &M, &K);
  for (int i = 1; i <= N; i++) scanf("%I64d", &a[i]);
  int u, v;
  long long w;
  for (int i = 0; i < K; i++) {
    scanf("%d %d %I64d", &u, &v, &w);
    p[u][v] = w;
  }
  for (int i = 1; i <= N; i++) dp[i][1 << i - 1] = a[i];
  long long ans = 0;
  int cnt;
  for (int i = 0; i < (1 << N); i++) {
    cnt = 0;
    for (int j = 1; j <= N; j++) {
      if (i & (1 << j - 1)) {
        cnt++;
        for (int k = 1; k <= N; k++)
          if (!(i & (1 << k - 1)))
            dp[k][i | (1 << k - 1)] =
                max(dp[k][i | (1 << k - 1)], dp[j][i] + a[k] + p[j][k]);
      }
    }
    if (cnt == M) {
      for (int j = 1; j <= N; j++)
        if (i & (1 << j - 1)) ans = max(ans, dp[j][i]);
    }
  }
  printf("%I64d", ans);
}
