output_description: Print the answer.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M K
      c_1 c_2 ... c_{N}
      a_1 b_1 w_1
      :
      a_M b_M w_M
attempt: class Unionfindtree:
      def __init__(self, number):
          self.par = [i for i in range(number)]
          self.rank = [0] * (number)
  
      def find(self, x):  # 親を探す
          if self.par[x] == x:
              return x
          else:
              self.par[x] = self.find(self.par[x])
              return self.par[x]
  
      def union(self, x, y):  # x,yを繋げる
          px = self.find(x)
          py = self.find(y)
          if px == py:
              return
          if self.rank[px] < self.rank[py]:
              self.par[px] = py
          else:
              self.par[py] = px
          if self.rank[px] == self.rank[py]:
              self.rank[px] += 1
  
      def connect(self, x, y):  # 親が同じかみる
          return self.find(x) == self.find(y)
  
  
  N, M, K = map(int, input().split())
  C = [int(i) for i in input().split()]
  table = []
  t = K
  dd = {}
  for i in range(M):
      s, u, c = map(int, input().split())
      a, b = C[s - 1], C[u - 1]
      if a == 0:
          a = dd.get(s, -1)
          if a == -1:
              t += 1
              dd[s] = t
              a = t
      elif b == 0:
          b = dd.get(u, -1)
          if b == -1:
              t += 1
              dd[u] = t
              b = t
      table.append((c, a, b))
  
  tree = Unionfindtree(t + 1)
  table.sort()
  ct = K - 1
  ans = 0
  for c, a, b in table:
      if not tree.connect(a, b) and ct > 0:
          tree.union(a, b)
          ans += c
          ct -= 1
  if ct > 0:
      print(-1)
  else:
      print(ans)
  
problem_description: Statement
  
  Ringo has an undirected graph G with N vertices numbered 1,2,...,N and M edges
  numbered 1,2,...,M. Edge i connects Vertex a_{i} and b_{i} and has a length of
  w_i.
  
  Now, he is in the middle of painting these N vertices in K colors numbered
  1,2,...,K. Vertex i is already painted in Color c_i, except when c_i = 0, in
  which case Vertex i is not yet painted.
  
  After he paints each vertex that is not yet painted in one of the K colors, he
  will give G to Snuke.
  
  Based on G, Snuke will make another undirected graph G' with K vertices
  numbered 1,2,...,K and M edges. Initially, there is no edge in G'. The i-th
  edge will be added as follows:
  
    * Let x and y be the colors of the two vertices connected by Edge i in G.
    * Add an edge of length w_i connecting Vertex x and y in G'.
  
  What is the minimum possible sum of the lengths of the edges in the minimum
  spanning tree of G'? If G' will not be connected regardless of how Ringo
  paints the vertices, print -1.
samples: [{"input": "4 3 3\n    1 0 1 2\n    1 2 10\n    2 3 20\n    2 4 50", "output": "60\n    \n\nG' will only be connected when Vertex 2 is painted in Color 3.\n\n* * *"}, {"input": "5 2 4\n    0 0 0 0 0\n    1 2 10\n    2 3 10", "output": "-1\n    \n\nRegardless of how Ringo paints the vertices, two edges is not enough to\nconnect four vertices as one.\n\n* * *"}, {"input": "9 12 9\n    1 2 3 4 5 6 7 8 9\n    6 9 9\n    8 9 6\n    6 7 85\n    9 5 545631016\n    2 1 321545\n    1 6 33562944\n    7 3 84946329\n    9 7 15926167\n    4 7 53386480\n    5 8 70476\n    4 6 4549\n    4 8 8", "output": "118901402\n    \n\n* * *"}, {"input": "18 37 12\n    5 0 4 10 8 7 2 10 6 0 9 12 12 11 11 11 0 1\n    17 1 1\n    11 16 7575\n    11 15 9\n    10 10 289938980\n    5 10 17376\n    18 4 1866625\n    8 11 959154208\n    18 13 200\n    16 13 2\n    2 7 982223\n    12 12 9331\n    13 12 8861390\n    14 13 743\n    2 10 162440\n    2 4 981849\n    7 9 1\n    14 17 2800\n    2 7 7225452\n    3 7 85\n    5 17 4\n    2 13 1\n    10 3 45\n    1 15 973\n    14 7 56553306\n    16 17 70476\n    7 18 9\n    9 13 27911\n    18 14 7788322\n    11 11 8925\n    9 13 654295\n    2 10 9\n    10 1 545631016\n    3 4 5\n    17 12 1929\n    2 11 57\n    1 5 4\n    1 17 7807368", "output": "171"}]