output_description: Print the minimum total cost required to make the forest connected, or print
  `Impossible` if it is impossible.
  
  * * *
input_description: Input is given from Standard Input in the following format:
  
      
      
      N M
      a_0 a_1 .. a_{N-1}
      x_1 y_1
      x_2 y_2
      :
      x_M y_M
attempt: n, m = map(int, input().split())
  k = n - m
  we = list(map(int, input().split()))
  pre = [i for i in range(n)]
  for _ in range(m):
      a, b = map(int, input().split())
      while a != pre[a]:
          a = pre[a]
      while b != pre[b]:
          b = pre[b]
      if a != b:
          pre[b] = a
  # print(pre)
  root = []
  for i in range(n):
      I = int(i)
      while I != pre[I]:
          I = pre[I]
      root.append(I)
  # print(root)
  rel = [-1 for _ in range(n)]
  cnt = 0
  for i in range(n):
      if root[i] == i:
          rel[i] = cnt
          cnt += 1
  # print(rel)
  trees = [[] for _ in range(k)]
  for i in range(n):
      trees[rel[root[i]]].append([we[i], i])
  # print(trees)
  import heapq
  
  now = trees[0]
  heapq.heapify(now)
  ans = 0
  for j in range(1, k):
      if not now:
          print("Impossible")
          exit()
      w0, i0 = heapq.heappop(now)
      w1, i1 = min(trees[j])
      ans += w0 + w1
      for x in trees[j]:
          if x[1] != i1:
              heapq.heappush(now, x)
  print(ans)
  
problem_description: Statement
  
  You are given a forest with N vertices and M edges. The vertices are numbered
  0 through N-1. The edges are given in the format (x_i,y_i), which means that
  Vertex x_i and y_i are connected by an edge.
  
  Each vertex i has a value a_i. You want to add edges in the given forest so
  that the forest becomes connected. To add an edge, you choose two different
  vertices i and j, then span an edge between i and j. This operation costs a_i
  + a_j dollars, and afterward neither Vertex i nor j can be selected again.
  
  Find the minimum total cost required to make the forest connected, or print
  `Impossible` if it is impossible.
samples: [{"input": "7 5\n    1 2 3 4 5 6 7\n    3 0\n    4 0\n    1 2\n    1 3\n    5 6", "output": "7\n    \n\nIf we connect vertices 0 and 5, the graph becomes connected, for the cost of 1\n+ 6 = 7 dollars.\n\n* * *"}, {"input": "5 0\n    3 1 4 1 5", "output": "Impossible\n    \n\nWe can't make the graph connected.\n\n* * *"}, {"input": "1 0\n    5", "output": "0\n    \n\nThe graph is already connected, so we do not need to add any edges."}]