#include <bits/stdc++.h>
using namespace std;
const int N = 1010;
struct App {
  int a, b, cost;
  App(int a, int b, int cost) : a(a), b(b), cost(cost) {}
  bool operator<(const App& o) const { return cost < o.cost; }
};
int calc(int n, vector<App>& apps) {
  int pa[N];
  fill_n(pa, N, -1);
  sort(apps.begin(), apps.end());
  int cost = 0;
  for (int i = 0; i < (int)(apps.size()); i++) {
    if (pa[apps[i].b] != -1) continue;
    cost += apps[i].cost;
    pa[apps[i].b] = apps[i].a;
  }
  int root = count(pa + 1, pa + n + 1, -1);
  if (root > 1) return -1;
  return cost;
}
int main() {
  int n;
  scanf("%d", &n);
  vector<int> quals(n);
  for (int i = 0; i < (int)(n); i++) scanf("%d", &quals[i]);
  int m;
  scanf("%d", &m);
  vector<App> apps;
  for (int i = 0; i < (int)(m); i++) {
    int a, b, c;
    scanf("%d %d %d", &a, &b, &c);
    apps.push_back(App(a, b, c));
  }
  cout << (calc(n, apps)) << '\n';
}
