#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e2+5;
const int maxm = 6e3+5;
struct node{
int u,v,val;
}e[maxm],c[maxm];
int n,m;
int fa[maxn],a[maxm];
void init(){
for(int i=1;i<=n;i++) fa[i]=i;
return ;
}
bool cmp(node x,node y){
return x.val<y.val;
}
int find(int x){
if(x!=fa[x]) fa[x]=find(fa[x]);
return fa[x];
}
void kruskal(int x){
for(int i=1;i<=x;i++)
e[i].u=c[i].u,e[i].v=c[i].v,e[i].val=c[i].val;
sort(e+1,e+x+1,cmp);
int cnt=0,now=0;
for(int i=1;i<=x;i++){
int u=find(e[i].u);
int v=find(e[i].v);
if(u==v)
continue;
fa[u]=v,now+=e[i].val,cnt++;
}
if(cnt==n-1)a[x]=min(a[x],now);
else a[x]=-1;
}
int main(){
memset(a,0x3f,sizeof a);
scanf("%d%d",&n,&m);
for(int i=1;i<=m;i++)
scanf("%d%d%d",&c[i].u,&c[i].v,&c[i].val);
for(int i=m;i>=1;i--){
init();
kruskal(i);
}
for(int i=1;i<=m;i++)
printf("%d\n",a[i]);
return 0;
}
/*
10 30
1 10 8527
6 9 284
1 9 8396
1 4 188
4 7 4087
4 10 2768
6 8 4829
1 3 312
7 9 3952
3 4 8335
4 5 7747
4 8 312
2 9 55
8 9 5914
2 5 8505
3 9 1274
8 10 2103
3 10 1836
2 4 4422
6 7 7097
3 8 5189
5 10 4144
5 9 1407
3 6 6172
2 7 4835
3 7 3689
7 8 7572
2 8 9319
1 5 4096
2 3 4714
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
-1
19705
19705
19705
16892
16227
15960
15960
15960
15960
12357
9620
9620
9620
9357
9357
9357
9357
9357
*/