#include<bits/stdc++.h>
using namespace std;
int read(){
int x=0;
char c=getchar();
while(c>'9'||c<'0'){
c=getchar();
}
while(c<='9'&&c>='0'){
x=(x<<1)+(x<<3)+(c^'0');
c=getchar();
}
return x;
}
int n,w;
int f[201];
int find(int x){
if(f[x]!=x)f[x]=find(f[x]);
return f[x];
}
inline void unity(int x,int y){
x=find(x);
y=find(y);
if(x==y)return ;
f[x]=y;
}
struct lines{
int u,v,id;
long long val;
bool operator < (const lines &a)const{
return val<a.val;
}
}l[6001];
inline void kruskal(int times){
long long ans=0;int cnt=0;
for(int i=1;i<=w;i++)f[i]=i;
for(int i=1;i<=w;i++){
if((l[i].id>times)||(find(l[i].u)==find(l[i].v)))continue;
unity(l[i].u,l[i].v);
ans+=l[i].val;
cnt++;
if(cnt==n-1){
printf("%lld\n",ans);
return;
}
}
printf("-1\n");
}
int main(){
n=read();
w=read();
for(int i=1;i<=w;i++){
l[i].u=read();
l[i].v=read();
l[i].id=i;
l[i].val=read();
}
sort(l+1,l+w+1);
for(int i=1;i<=w;i++){
kruskal(i);
}
return 0;
}