from pulp import * N = int(input()) P = list(map(int,input().split())) M = int(input()) edge = [] for _ in range(M): u,v = list(map(int,input().split())) u -= 1;v -= 1 edge.append((u,v)) more = [] K = int(input()) for _ in range(K): a,b,s = list(map(int,input().split())) a -= 1;b -= 1 more.append((a,b,s)) p = LpProblem(sense=LpMaximize) x = [LpVariable(f"x_{i}",cat=LpBinary) for i in range(N)] p += lpSum(P[i] * x[i] for i in range(N)) + lpSum(s for a,b,s in more if x[a] == x[b] == 1) for u,v in edge: p += x[u] >= x[v] solver = PULP_CBC_CMD(msg=False) p.solve(solver) print(round(sum([P[i] * x[i].value() for i in range(N)]) + sum([s for a,b,s in more if x[a].value() == x[b].value() == 1])))