#include <bits/stdc++.h>
using namespace std;
long long int n, m, k, dp[1 << 20][20], a[20], b[20][20];
bool check(long long int num, long long int pos) {
  if (num & ((long long int)1 << pos)) return true;
  return false;
}
long long int setbit(long long int num, long long int pos) {
  return (num | (1 << pos));
}
long long int dynamic(long long int mask, long long int now,
                      long long int cnt) {
  if (cnt >= m) return dp[mask][now + 1] = 0;
  if (dp[mask][now + 1] != -1) return dp[mask][now + 1];
  for (long long int i = 0; i < n; i++) {
    if (!check(mask, i)) {
      long long int lol = dynamic(setbit(mask, i), i, cnt + 1);
      lol += (a[i] + b[now + 1][i + 1]);
      dp[mask][now + 1] = max(lol, dp[mask][now + 1]);
    }
  }
  return dp[mask][now + 1];
}
int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  ;
  memset(dp, -1, sizeof(dp));
  scanf("%lld%lld%lld", &n, &m, &k);
  for (long long int i = 0; i < n; i++) scanf("%lld", &a[i]);
  for (long long int i = 1, x, y, z; i <= k; i++) {
    scanf("%lld%lld%lld", &x, &y, &z);
    b[x][y] += z;
  }
  printf("%lld", dynamic(0, -1, 0));
  return 0;
}
