#include <iostream>
#include <bits/stdc++.h>
using namespace std;
const int inf=0x3f3f3f3f;
const int N=11111;
struct node
{
int u;
int v;
int w;
} p[N];
int vis[N];
bool cmp(node x,node y)
{
return x.w<y.w;
}
void init(int n)
{
int i;
for(i=1; i<=n; i++)
{
vis[i]=i;
}
}
int find1(int i)
{
if(vis[i]!=i)
{
vis[i]=find1(vis[i]);
}
return vis[i];
}
bool join(int u,int v)
{
int xx=find1(u);
int yy=find1(v);
if(xx==yy)
{
return true;
}
else
{
vis[yy]=xx;
return false;
}
}
int main()
{
int n,m;
while(~scanf("%d %d",&n,&m))
{
init(n);
int i;
for(i=1; i<=m; i++)
{
cin>>p[i].u>>p[i].v>>p[i].w;
}
sort(p+1,p+1+m,cmp);
int ans=0;
int cot=0;
for(i=1; i<=m; i++)
{
if(!join(p[i].u,p[i].v))
{
ans=ans+p[i].w;
cot++;
}
}
if(cot==n-1)
{
printf("%d\n",ans);
}
else
{
printf("Impossible\n");
}
}
return 0;
}