#include <bits/stdc++.h>
#define fi first
#define se second
#define int long long
using namespace std;
const int N = 2e5+5;
int n,m;
struct Node
{
int u,v,w,id;
} edge[N];
map<int,int> mp;
bool cmp(const Node&a, const Node &b)
{
return a.w < b.w;
}
/// DSU để tìm cây khung
int parent[N], sz[N];
int find(int x)
{
if(x == parent[x]) return x;
return parent[x] = find(parent[x]);
}
/// LCA để tìm max
vector<pair<int,int>> g[N];
int p[N][34], maxi[N][34], h[N];
void dfs(int u, int par)
{
for(auto e : g[u])
{
int v = e.fi;
int w = e.se;
if(v != par)
{
p[v][0] = u;
h[v] = h[u] + 1;
maxi[v][0] = w;
dfs(v,u);
}
}
}
void init()
{
for(int j = 1; j <= 30; j++)
{
for(int i = 1; i <= n; i++)
{
maxi[i][j] = max(maxi[i][j-1], maxi[p[i][j-1]][j-1]);
p[i][j] = p[p[i][j-1]][j-1];
}
}
}
int get_max(int u, int v)
{
if(h[v] > h[u]) swap(v,u);
int x = h[u] - h[v];
int res = -1e18;
for(int i = 30; i >= 0; i--)
{
if(x >= (1 << i))
{
res = max(res, maxi[u][i]);
u = p[u][i];
x -= (1 << i);
}
}
if(u == v) return res;
for(int i = 30; i >= 0; i--)
{
if(p[u][i] != p[v][i])
{
res = max({res, maxi[u][i], maxi[v][i]});
u = p[u][i];
v = p[v][i];
}
}
return max({res, maxi[u][0], maxi[v][0]});
}
/// KẾT QUẢ
int ans[N];
bool check[N];
main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
// freopen("spanedge.inp", "r", stdin);
// freopen("spanedge.out", "w", stdout);
cin >> n >> m;
/// KHAI BÁO DSU VÀ NHẬP CẠNH
for(int i = 1; i <= n; i++) parent[i] = i;
for(int i = 1; i <= m; i++)
{
cin >> edge[i].u >> edge[i].v >> edge[i].w;
edge[i].id = i;
}
/// SORT TĂNG DẦN ĐỂ TÌM CÂY KHUNG BÉ NHẤT
sort(edge+1,edge+1+m,cmp);
/// DỰNG CÂY KHUNG
int total = 0;
int W = 0;
for(int i = 1; i <= m; i++)
{
int u = edge[i].u;
int v = edge[i].v;
int w = edge[i].w;
int id = edge[i].id;
int x = find(u);
int y = find(v);
if(x != y)
{
if(sz[x] < sz[y]) swap(x,y);
parent[y] = x;
sz[x] += sz[y];
W += w;
total++;
mp[id] = 1;
g[u].push_back({v,w});
g[v].push_back({u,w});
}
if(total == n - 1) break;
}
dfs(1,-1);
init();
for(int i = 1; i <= m; i++)
{
int u = edge[i].u;
int v = edge[i].v;
int w = edge[i].w;
int id = edge[i].id;
/// Nếu cạnh này đã check rồi thì bỏ đi
if(mp[id] == 1) mp[id] = W;
else mp[id] = W - get_max(u,v) + w;
}
for(int i = 1; i <= m; i++)
cout << mp[i] << "\n";
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBpbnQgbG9uZyBsb25nCnVzaW5nIG5hbWVzcGFjZSBzdGQ7CmNvbnN0IGludCBOID0gMmU1KzU7CmludCBuLG07CnN0cnVjdCBOb2RlCnsKICAgIGludCB1LHYsdyxpZDsKfSBlZGdlW05dOwptYXA8aW50LGludD4gbXA7CmJvb2wgY21wKGNvbnN0IE5vZGUmYSwgY29uc3QgTm9kZSAmYikKewogICAgcmV0dXJuIGEudyA8IGIudzsKfQoKLy8vIERTVSDEkeG7gyB0w6xtIGPDonkga2h1bmcKaW50IHBhcmVudFtOXSwgc3pbTl07CmludCBmaW5kKGludCB4KQp7CiAgICBpZih4ID09IHBhcmVudFt4XSkgcmV0dXJuIHg7CiAgICByZXR1cm4gcGFyZW50W3hdID0gZmluZChwYXJlbnRbeF0pOwp9CgovLy8gTENBIMSR4buDIHTDrG0gbWF4CnZlY3RvcjxwYWlyPGludCxpbnQ+PiBnW05dOwoKaW50IHBbTl1bMzRdLCBtYXhpW05dWzM0XSwgaFtOXTsKCnZvaWQgZGZzKGludCB1LCBpbnQgcGFyKQp7CiAgICBmb3IoYXV0byBlIDogZ1t1XSkKICAgIHsKICAgICAgICBpbnQgdiA9IGUuZmk7CiAgICAgICAgaW50IHcgPSBlLnNlOwogICAgICAgIGlmKHYgIT0gcGFyKQogICAgICAgIHsKICAgICAgICAgICAgcFt2XVswXSA9IHU7CiAgICAgICAgICAgIGhbdl0gPSBoW3VdICsgMTsKICAgICAgICAgICAgbWF4aVt2XVswXSA9IHc7CiAgICAgICAgICAgIGRmcyh2LHUpOwogICAgICAgIH0KICAgIH0KfQoKdm9pZCBpbml0KCkKewogICAgZm9yKGludCBqID0gMTsgaiA8PSAzMDsgaisrKQogICAgewogICAgICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbjsgaSsrKQogICAgICAgIHsKICAgICAgICAgICAgbWF4aVtpXVtqXSA9IG1heChtYXhpW2ldW2otMV0sIG1heGlbcFtpXVtqLTFdXVtqLTFdKTsKICAgICAgICAgICAgcFtpXVtqXSA9IHBbcFtpXVtqLTFdXVtqLTFdOwogICAgICAgIH0KICAgIH0KfQoKaW50IGdldF9tYXgoaW50IHUsIGludCB2KQp7CiAgICBpZihoW3ZdID4gaFt1XSkgc3dhcCh2LHUpOwogICAgaW50IHggPSBoW3VdIC0gaFt2XTsKICAgIGludCByZXMgPSAtMWUxODsKICAgIGZvcihpbnQgaSA9IDMwOyBpID49IDA7IGktLSkKICAgIHsKICAgICAgICBpZih4ID49ICgxIDw8IGkpKQogICAgICAgIHsKICAgICAgICAgICAgcmVzID0gbWF4KHJlcywgbWF4aVt1XVtpXSk7CiAgICAgICAgICAgIHUgPSBwW3VdW2ldOwogICAgICAgICAgICB4IC09ICgxIDw8IGkpOwogICAgICAgIH0KICAgIH0KCiAgICBpZih1ID09IHYpIHJldHVybiByZXM7CgogICAgZm9yKGludCBpID0gMzA7IGkgPj0gMDsgaS0tKQogICAgewogICAgICAgIGlmKHBbdV1baV0gIT0gcFt2XVtpXSkKICAgICAgICB7CiAgICAgICAgICAgIHJlcyA9IG1heCh7cmVzLCBtYXhpW3VdW2ldLCBtYXhpW3ZdW2ldfSk7CiAgICAgICAgICAgIHUgPSBwW3VdW2ldOwogICAgICAgICAgICB2ID0gcFt2XVtpXTsKICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gbWF4KHtyZXMsIG1heGlbdV1bMF0sIG1heGlbdl1bMF19KTsKfQoKCi8vLyBL4bq+VCBRVeG6ogoKaW50IGFuc1tOXTsKYm9vbCBjaGVja1tOXTsKbWFpbigpCnsKICAgIGlvc19iYXNlOjpzeW5jX3dpdGhfc3RkaW8oZmFsc2UpOwogICAgY2luLnRpZShOVUxMKTsKLy8gICAgZnJlb3Blbigic3BhbmVkZ2UuaW5wIiwgInIiLCBzdGRpbik7Ci8vICAgIGZyZW9wZW4oInNwYW5lZGdlLm91dCIsICJ3Iiwgc3Rkb3V0KTsKICAgIGNpbiA+PiBuID4+IG07CiAgICAvLy8gS0hBSSBCw4FPIERTVSBWw4AgTkjhuqxQIEPhuqBOSAogICAgZm9yKGludCBpID0gMTsgaSA8PSBuOyBpKyspIHBhcmVudFtpXSA9IGk7CiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgIHsKICAgICAgICBjaW4gPj4gZWRnZVtpXS51ID4+IGVkZ2VbaV0udiA+PiBlZGdlW2ldLnc7CiAgICAgICAgZWRnZVtpXS5pZCA9IGk7CiAgICB9CgogICAgLy8vIFNPUlQgVMSCTkcgROG6pk4gxJDhu4IgVMOMTSBDw4JZIEtIVU5HIELDiSBOSOG6pFQKICAgIHNvcnQoZWRnZSsxLGVkZ2UrMSttLGNtcCk7CgoKICAgIC8vLyBE4buwTkcgQ8OCWSBLSFVORwogICAgaW50IHRvdGFsID0gMDsKICAgIGludCBXID0gMDsKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKQogICAgewogICAgICAgIGludCB1ID0gZWRnZVtpXS51OwogICAgICAgIGludCB2ID0gZWRnZVtpXS52OwogICAgICAgIGludCB3ID0gZWRnZVtpXS53OwogICAgICAgIGludCBpZCA9IGVkZ2VbaV0uaWQ7CgogICAgICAgIGludCB4ID0gZmluZCh1KTsKICAgICAgICBpbnQgeSA9IGZpbmQodik7CiAgICAgICAgaWYoeCAhPSB5KQogICAgICAgIHsKICAgICAgICAgICAgaWYoc3pbeF0gPCBzelt5XSkgc3dhcCh4LHkpOwogICAgICAgICAgICBwYXJlbnRbeV0gPSB4OwogICAgICAgICAgICBzelt4XSArPSBzelt5XTsKICAgICAgICAgICAgVyArPSB3OwogICAgICAgICAgICB0b3RhbCsrOwogICAgICAgICAgICBtcFtpZF0gPSAxOwogICAgICAgICAgICBnW3VdLnB1c2hfYmFjayh7dix3fSk7CiAgICAgICAgICAgIGdbdl0ucHVzaF9iYWNrKHt1LHd9KTsKICAgICAgICB9CiAgICAgICAgaWYodG90YWwgPT0gbiAtIDEpIGJyZWFrOwogICAgfQoKICAgIGRmcygxLC0xKTsKICAgIGluaXQoKTsKCiAgICBmb3IoaW50IGkgPSAxOyBpIDw9IG07IGkrKykKICAgIHsKICAgICAgICBpbnQgdSA9IGVkZ2VbaV0udTsKICAgICAgICBpbnQgdiA9IGVkZ2VbaV0udjsKICAgICAgICBpbnQgdyA9IGVkZ2VbaV0udzsKICAgICAgICBpbnQgaWQgPSBlZGdlW2ldLmlkOwogICAgICAgIC8vLyBO4bq/dSBj4bqhbmggbsOgeSDEkcOjIGNoZWNrIHLhu5NpIHRow6wgYuG7jyDEkWkKICAgICAgICBpZihtcFtpZF0gPT0gMSkgbXBbaWRdID0gVzsKICAgICAgICBlbHNlIG1wW2lkXSA9IFcgLSBnZXRfbWF4KHUsdikgKyB3OwogICAgfQoKICAgIGZvcihpbnQgaSA9IDE7IGkgPD0gbTsgaSsrKQogICAgICAgIGNvdXQgPDwgbXBbaV0gPDwgIlxuIjsKCn0K