re
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int maxn = 200010;
const int maxm = maxn;
int hd[maxn];
struct edge{
int u,v,w,nxt;
}e[maxm];
int n,m,cnt,s;
int sum[maxn];
void add_edge(int u,int v,int w){
e[++cnt] = edge{u,v,w,hd[u]};
hd[u] = cnt;
return ;
}
int f[maxn];
int find(int x){return f[x] = (f[x] == x ? x : find(f[x]));}
bool used[maxn];
void dfs(int now,int num){
// if(used[now]) return;
for(int i = hd[now];i != 0;i = e[i].nxt){
int v = e[i].v;
if(used[v] == 0){
// cout << now << ' ' << v << endl;
used[v] = 1;
sum[v] = num+e[i].w;
dfs(v,sum[v]);
}
}
}
signed main(){
ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
cin >> n >> m;
for(int i = 1;i <= n;i++) f[i] = i;
for(int i = 1,u,v,w;i <= m;i++){
cin >> u >> v >> w;
int rootx = find(u);
int rooty = find(v);
if(rootx != rooty) f[rootx] = rooty;
add_edge(u,v,w) ;
add_edge(v,u,-w);
}
// sum[1] = 0;
for(int i = 1;i <= n;i++){
if(used[find(i)]) continue;
// cout << i << ' ' << find(i) << endl;
used[find(i)] = 1;
dfs(find(i),0);
}
for(int i = 1;i <= n;i++) cout << sum[i] << ' ';
return 0;
}