#include<bits/stdc++.h>usingnamespace std;constint N =200010;int n, m;int p[N];struct E{int a, b, w;booloperator<(E const&W)const{return w < W.w;}}e[N];intfind(int x){if(p[x]!= x) p[x]=find(p[x]);/* 如果p[x]不是x的祖宗节点,继续找。*/return p[x];}intmain(){
cin >> n >> m;for(int i =0; i < m; i ++){int a, b, w;
cin >> a >> b >> w;
e[i]={a, b, w};}sort(e, e + m);for(int i =1; i < n; i ++) p[i]= i;int res =0, cnt =0;for(int i =0; i < m; i ++){int a = e[i].a, b = e[i].b, w = e[i].w;
a =find(a), b =find(b);if(a != b){
p[a]= b;
res += w;
cnt ++;}}if(cnt < n -1) cout <<"impossible";else cout << res;return0;}/*
p[N]是并查集
从小到大枚举所有边。
找到a、b的祖宗节点,若不一样即不连通
res代表当前所有树边的权重之和
cnt代表当前存了多少条边。
若cnt < n - 1说明图不连通。