#include <bits/stdc++.h>
using namespace std;
int main() {
  int n;
  cin >> n;
  vector<int> q(n);
  for (int i = 0; i < n; i++) cin >> q[i];
  int m = 0;
  cin >> m;
  vector<vector<pair<int, int> > > reb(n);
  vector<vector<pair<int, int> > > reb_rev(n);
  for (int i = 0; i < m; i++) {
    int j = 0;
    cin >> j;
    int b, c;
    cin >> b >> c;
    reb[j - 1].push_back(make_pair(b - 1, c));
    reb_rev[b - 1].push_back(make_pair(j - 1, c));
  }
  vector<bool> is(n);
  int k = 0;
  int res = 0;
  while (k != n - 1) {
    int cur = 0;
    for (int i = 0; i < n; i++) {
      if (reb[i].empty()) {
        if (is[i]) continue;
        cur = i;
        break;
      }
    }
    k++;
    is[cur] = 1;
    if (reb_rev[cur].empty()) {
      cout << -1 << endl;
      return 0;
    }
    int mn = reb_rev[cur][0].second;
    for (int i = 0; i < reb_rev[cur].size(); i++)
      if (mn > reb_rev[cur][i].second) mn = reb_rev[cur][i].second;
    res += mn;
    for (int i = 0; i < reb_rev[cur].size(); i++) {
      for (int j = 0; j < reb[reb_rev[cur][i].first].size(); j++) {
        if (reb[reb_rev[cur][i].first][j].first == cur) {
          reb[reb_rev[cur][i].first].erase(reb[reb_rev[cur][i].first].begin() +
                                           j);
          j--;
        }
      }
    }
    reb_rev[cur].clear();
  }
  cout << res << endl;
}
