Time limit: 1.0s , Memory limit: 256M , Points: 1

Cho đồ thị gồm n đỉnh và m cạnh, các đỉnh được đánh số từ 0 đến n-1. Giữa hai đỉnh của đồ thị có tối đa một đường đi đơn giữa chúng. Mỗi đỉnh i được gán giá trị a_i. Bạn có thể thực hiện thao tác thêm một cạnh nối giữa hai đỉnh xy của đồ thị với chi phí a_x+a_y, nhưng sau đó hai đỉnh xy không được sử dụng để thực hiện các thao tác khác.

Bạn hãy xác định tổng chi phí tối thiểu để thêm các cạnh nối sao cho giữa hai đỉnh bất kỳ của đồ thị đều có đường đi.

Input

  • Dòng đầu tiên chứa hai số nguyên nm (1 \le n \le 10^5 ; 0 \le m \le n - 1).
  • Dòng thứ hai chứa n số nguyên a_i (1 \le a_i \le 10^9).
  • m dòng tiếp theo, mỗi dòng chứa hai số nguyên uv mô tả các cạnh nối (0 \le u,v \le n-1 ; u \neq v).
  • Dữ liệu đảm bảo giữa hai đỉnh bất kỳ có tối đa một đường đi đơn nối giữa chúng.

Output

  • In ra tổng chi phí nhỏ nhất để thêm các cạnh nối sao cho đồ thị trở thành liên thông. Nếu không tồn tại bất kỳ chuỗi thao tác nào phù hợp, in ra Impossible.

Examples

Sample Input 1
7 5
4 3 5 2 6 2 3
1 3
0 3
5 6
2 1
0 4
Sample Output 1
4
Sample Input 2
5 1
1 1 1 1 1
0 1
Sample Output 2
Impossible
Sample Input 3
4 1
1 1 1 1
0 1
Sample Output 3
4

Notes

Trong ví dụ đầu tiên, tiến hành nối hai đỉnh 35 của đồ thị với chi phí a_3+a_5=2+2=4, lúc này đồ thị trở thành liên thông.


Comments