#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for(int i = (a); i <= (b); ++i)
#define FORD(i, a, b) for(int i = (a); i >= (b); --i)
#define sz(a) (int)(a).size()
#define all(a) (a).begin(), (a).end()
#define bit(s, i) (((s) >> (i)) & 1)
#define ii pair <int, int>
#define fi first
#define se second
#define ll long long
#define eb emplace_back
#define pb push_back
#define __builtin_popcount __builtin_popcountll
template <class X, class Y>
bool maxi(X &x, Y y) {
if(x < y) {
x = y;
return true;
}
return false;
}
template <class X, class Y>
bool mini(X &x, Y y) {
if(x > y) {
x = y;
return true;
}
return false;
}
void solve();
int32_t main() {
#define task "test"
if(fopen(task".inp", "r")){
freopen(task".inp", "r", stdin);
freopen(task".out", "w", stdout);
}
cin.tie(0)->sync_with_stdio(0);
int tc = 1; //cin >> tc;
FOR(i, 1, tc){
solve();
}
}
const int N=3e5+5;
const int LG=18;
const int INF=2e9;
int n,m;
pair<ii,int> ed[N];
int h[N],tin[N],tout[N],we[N],par[N],Time;
bool isMST[N];
vector<ii> adj[N];
void input(){
cin>>n>>m;
FOR(i,1,m){
int u,v,w; cin>>u>>v>>w;
ed[i]={{u,v},w};
}
sort(ed+1,ed+1+m,[](pair<ii,int>x,pair<ii,int>y){return x.se<y.se;});
}
struct DSU{
int par[N];
int find(int a){
return par[a]==0?a:par[a]=find(par[a]);
}
bool unite(int a, int b){
a=find(a); b=find(b);
if(a!=b){
par[b]=a;
return true;
}
return false;
}
} dsu1,dsu2;
void dfs(int u, int p){
tin[u]=++Time;
for(auto [v,w]:adj[u]) if(v!=p){
h[v]=h[u]+1;
par[v]=u;
we[v]=w;
dfs(v,u);
}
tout[u]=Time;
}
bool isAncestor(int r, int u){
return tin[r]<=tin[u]&&tout[u]<=tout[r];
}
void build_mst(){
FOR(i,1,m){
int u=ed[i].fi.fi, v=ed[i].fi.se, w=ed[i].se;
if(dsu1.unite(u,v)){
adj[u].eb(v,w);
adj[v].eb(u,w);
isMST[i]=true;
}
}
dfs(1,-1);
}
int curw;
bool isTurn[N];
struct segmentTree{
int st[N<<2],lz[N<<2];
segmentTree(){
fill(begin(st),end(st),INF);
fill(begin(lz),end(lz),INF);
}
void apply(int id, int val){
mini(st[id],val);
mini(lz[id],val);
}
void down(int id){
if(lz[id]==INF) return;
apply(id<<1,lz[id]);
apply(id<<1|1,lz[id]);
lz[id]=INF;
}
void upd(int u, int v, int val, int id, int l, int r){
if(u>r||v<l) return;
if(u<=l&&r<=v){
apply(id,val);
return;
}
int mid=(l+r)>>1;
down(id);
upd(u,v,val,id<<1,l,mid);
upd(u,v,val,id<<1|1,mid+1,r);
st[id]=min(st[id<<1],st[id<<1|1]);
}
void upd(int u, int v, int val){
upd(u,v,val,1,1,n);
}
void upd(int x, int val){
int id=1, l=1, r=n;
while(l<r){
int mid=(l+r)>>1;
down(id);
if(x<=mid){
id=id<<1;
r=mid;
}
else{
id=id<<1|1;
l=mid+1;
}
}
st[id]=val;
while(id>1){
id/=2;
st[id]=min(st[id<<1],st[id<<1|1]);
}
}
int get(int x){
int id=1, l=1, r=n;
while(l<r){
int mid=(l+r)>>1;
down(id);
if(x<=mid){
id=id<<1;
r=mid;
}
else{
id=id<<1|1;
l=mid+1;
}
}
return st[id];
}
int get(int u, int v, int id, int l, int r){
if(u>r||v<l) return INF;
if(u<=l&&r<=v) return st[id];
int mid=(l+r)>>1;
down(id);
return min(get(u,v,id<<1,l,mid),get(u,v,id<<1|1,mid+1,r));
}
int get(int u, int v){
return get(u,v,1,1,n);
}
} seg_mi,seg_res;
void dfs_turn(int u){
isTurn[u]=true;
seg_res.upd(tin[u],seg_mi.get(tin[u])+curw);
for(auto [v,w]:adj[u]) if(v!=par[u]&&w<=curw){
dfs_turn(v);
}
}
void main_solve(){
isTurn[1]=true;
FOR(i,2,n){
seg_mi.upd(tin[i],tout[i],we[i]);
}
FOR(i,1,m){
int u=ed[i].fi.fi, v=ed[i].fi.se, w=ed[i].se; curw=w;
if(isMST[i]){
if(isTurn[u]&&isTurn[v]) continue;
if(isTurn[u]) dfs_turn(v);
else if(isTurn[v]) dfs_turn(u);
}
else{
int rmi=1e9;
u=dsu2.find(u), v=dsu2.find(v);
while(!isAncestor(u,v)){
mini(rmi,we[u]);
dsu2.unite(par[u],u);
u=dsu2.find(u);
}
while(!isAncestor(v,u)){
mini(rmi,we[v]);
dsu2.unite(par[v],v);
v=dsu2.find(v);
}
mini(we[u],rmi); mini(we[v],rmi);
seg_mi.upd(tin[u],tout[u],rmi);
seg_res.upd(tin[u],tout[u],rmi+curw);
}
}
FOR(i,2,n) cout<<seg_res.get(tin[i])<<'\n';
}
void solve() {
input();
build_mst();
main_solve();
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgojZGVmaW5lIEZPUihpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPD0gKGIpOyArK2kpCiNkZWZpbmUgRk9SRChpLCBhLCBiKSBmb3IoaW50IGkgPSAoYSk7IGkgPj0gKGIpOyAtLWkpCiNkZWZpbmUgc3ooYSkgKGludCkoYSkuc2l6ZSgpCiNkZWZpbmUgYWxsKGEpIChhKS5iZWdpbigpLCAoYSkuZW5kKCkKI2RlZmluZSBiaXQocywgaSkgKCgocykgPj4gKGkpKSAmIDEpCiNkZWZpbmUgaWkgcGFpciA8aW50LCBpbnQ+CiNkZWZpbmUgZmkgZmlyc3QKI2RlZmluZSBzZSBzZWNvbmQKI2RlZmluZSBsbCBsb25nIGxvbmcKI2RlZmluZSBlYiBlbXBsYWNlX2JhY2sKI2RlZmluZSBwYiBwdXNoX2JhY2sKI2RlZmluZSBfX2J1aWx0aW5fcG9wY291bnQgX19idWlsdGluX3BvcGNvdW50bGwKCnRlbXBsYXRlIDxjbGFzcyBYLCBjbGFzcyBZPgogICAgYm9vbCBtYXhpKFggJngsIFkgeSkgewogICAgICAgIGlmKHggPCB5KSB7CiAgICAgICAgICAgIHggPSB5OwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQoKdGVtcGxhdGUgPGNsYXNzIFgsIGNsYXNzIFk+CiAgICBib29sIG1pbmkoWCAmeCwgWSB5KSB7CiAgICAgICAgaWYoeCA+IHkpIHsKICAgICAgICAgICAgeCA9IHk7CiAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgIH0KICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9Cgp2b2lkIHNvbHZlKCk7CmludDMyX3QgbWFpbigpIHsKICAgICNkZWZpbmUgdGFzayAidGVzdCIKICAgIGlmKGZvcGVuKHRhc2siLmlucCIsICJyIikpewogICAgICAgIGZyZW9wZW4odGFzayIuaW5wIiwgInIiLCBzdGRpbik7CiAgICAgICAgZnJlb3Blbih0YXNrIi5vdXQiLCAidyIsIHN0ZG91dCk7CiAgICB9CiAgICBjaW4udGllKDApLT5zeW5jX3dpdGhfc3RkaW8oMCk7CgogICAgaW50IHRjID0gMTsgLy9jaW4gPj4gdGM7CiAgICBGT1IoaSwgMSwgdGMpewogICAgICAgIHNvbHZlKCk7CiAgICB9Cn0KCmNvbnN0IGludCBOPTNlNSs1Owpjb25zdCBpbnQgTEc9MTg7CmNvbnN0IGludCBJTkY9MmU5OwoKaW50IG4sbTsKcGFpcjxpaSxpbnQ+IGVkW05dOwoKaW50IGhbTl0sdGluW05dLHRvdXRbTl0sd2VbTl0scGFyW05dLFRpbWU7CmJvb2wgaXNNU1RbTl07CnZlY3RvcjxpaT4gYWRqW05dOwoKdm9pZCBpbnB1dCgpewogICAgY2luPj5uPj5tOwogICAgRk9SKGksMSxtKXsKICAgICAgICBpbnQgdSx2LHc7IGNpbj4+dT4+dj4+dzsKICAgICAgICBlZFtpXT17e3Usdn0sd307CiAgICB9CiAgICBzb3J0KGVkKzEsZWQrMSttLFtdKHBhaXI8aWksaW50PngscGFpcjxpaSxpbnQ+eSl7cmV0dXJuIHguc2U8eS5zZTt9KTsKfQoKc3RydWN0IERTVXsKICAgIGludCBwYXJbTl07CiAgICBpbnQgZmluZChpbnQgYSl7CiAgICAgICAgcmV0dXJuIHBhclthXT09MD9hOnBhclthXT1maW5kKHBhclthXSk7CiAgICB9CiAgICBib29sIHVuaXRlKGludCBhLCBpbnQgYil7CiAgICAgICAgYT1maW5kKGEpOyBiPWZpbmQoYik7CiAgICAgICAgaWYoYSE9Yil7CiAgICAgICAgICAgIHBhcltiXT1hOwogICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQp9IGRzdTEsZHN1MjsKCnZvaWQgZGZzKGludCB1LCBpbnQgcCl7CiAgICB0aW5bdV09KytUaW1lOwogICAgZm9yKGF1dG8gW3Ysd106YWRqW3VdKSBpZih2IT1wKXsKICAgICAgICBoW3ZdPWhbdV0rMTsKICAgICAgICBwYXJbdl09dTsKICAgICAgICB3ZVt2XT13OwogICAgICAgIGRmcyh2LHUpOwogICAgfQogICAgdG91dFt1XT1UaW1lOwp9Cgpib29sIGlzQW5jZXN0b3IoaW50IHIsIGludCB1KXsKICAgIHJldHVybiB0aW5bcl08PXRpblt1XSYmdG91dFt1XTw9dG91dFtyXTsKfQoKdm9pZCBidWlsZF9tc3QoKXsKICAgIEZPUihpLDEsbSl7CiAgICAgICAgaW50IHU9ZWRbaV0uZmkuZmksIHY9ZWRbaV0uZmkuc2UsIHc9ZWRbaV0uc2U7CiAgICAgICAgaWYoZHN1MS51bml0ZSh1LHYpKXsKICAgICAgICAgICAgYWRqW3VdLmViKHYsdyk7CiAgICAgICAgICAgIGFkalt2XS5lYih1LHcpOwogICAgICAgICAgICBpc01TVFtpXT10cnVlOwogICAgICAgIH0KICAgIH0KICAgIGRmcygxLC0xKTsKfQoKaW50IGN1cnc7CmJvb2wgaXNUdXJuW05dOwoKc3RydWN0IHNlZ21lbnRUcmVlewogICAgaW50IHN0W048PDJdLGx6W048PDJdOwoKICAgIHNlZ21lbnRUcmVlKCl7CiAgICAgICAgZmlsbChiZWdpbihzdCksZW5kKHN0KSxJTkYpOwogICAgICAgIGZpbGwoYmVnaW4obHopLGVuZChseiksSU5GKTsKICAgIH0KCiAgICB2b2lkIGFwcGx5KGludCBpZCwgaW50IHZhbCl7CiAgICAgICAgbWluaShzdFtpZF0sdmFsKTsKICAgICAgICBtaW5pKGx6W2lkXSx2YWwpOwogICAgfQogICAgdm9pZCBkb3duKGludCBpZCl7CiAgICAgICAgaWYobHpbaWRdPT1JTkYpIHJldHVybjsKICAgICAgICBhcHBseShpZDw8MSxseltpZF0pOwogICAgICAgIGFwcGx5KGlkPDwxfDEsbHpbaWRdKTsKICAgICAgICBseltpZF09SU5GOwogICAgfQogICAgdm9pZCB1cGQoaW50IHUsIGludCB2LCBpbnQgdmFsLCBpbnQgaWQsIGludCBsLCBpbnQgcil7CiAgICAgICAgaWYodT5yfHx2PGwpIHJldHVybjsKICAgICAgICBpZih1PD1sJiZyPD12KXsKICAgICAgICAgICAgYXBwbHkoaWQsdmFsKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpbnQgbWlkPShsK3IpPj4xOwogICAgICAgIGRvd24oaWQpOwogICAgICAgIHVwZCh1LHYsdmFsLGlkPDwxLGwsbWlkKTsKICAgICAgICB1cGQodSx2LHZhbCxpZDw8MXwxLG1pZCsxLHIpOwogICAgICAgIHN0W2lkXT1taW4oc3RbaWQ8PDFdLHN0W2lkPDwxfDFdKTsKICAgIH0KICAgIHZvaWQgdXBkKGludCB1LCBpbnQgdiwgaW50IHZhbCl7CiAgICAgICAgdXBkKHUsdix2YWwsMSwxLG4pOwogICAgfQogICAgdm9pZCB1cGQoaW50IHgsIGludCB2YWwpewogICAgICAgIGludCBpZD0xLCBsPTEsIHI9bjsKICAgICAgICB3aGlsZShsPHIpewogICAgICAgICAgICBpbnQgbWlkPShsK3IpPj4xOwogICAgICAgICAgICBkb3duKGlkKTsKICAgICAgICAgICAgaWYoeDw9bWlkKXsKICAgICAgICAgICAgICAgIGlkPWlkPDwxOwogICAgICAgICAgICAgICAgcj1taWQ7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZXsKICAgICAgICAgICAgICAgIGlkPWlkPDwxfDE7CiAgICAgICAgICAgICAgICBsPW1pZCsxOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHN0W2lkXT12YWw7CiAgICAgICAgd2hpbGUoaWQ+MSl7CiAgICAgICAgICAgIGlkLz0yOwogICAgICAgICAgICBzdFtpZF09bWluKHN0W2lkPDwxXSxzdFtpZDw8MXwxXSk7CiAgICAgICAgfQogICAgfQogICAgaW50IGdldChpbnQgeCl7CiAgICAgICAgaW50IGlkPTEsIGw9MSwgcj1uOwogICAgICAgIHdoaWxlKGw8cil7CiAgICAgICAgICAgIGludCBtaWQ9KGwrcik+PjE7CiAgICAgICAgICAgIGRvd24oaWQpOwogICAgICAgICAgICBpZih4PD1taWQpewogICAgICAgICAgICAgICAgaWQ9aWQ8PDE7CiAgICAgICAgICAgICAgICByPW1pZDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlbHNlewogICAgICAgICAgICAgICAgaWQ9aWQ8PDF8MTsKICAgICAgICAgICAgICAgIGw9bWlkKzE7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIHN0W2lkXTsKICAgIH0KICAgIGludCBnZXQoaW50IHUsIGludCB2LCBpbnQgaWQsIGludCBsLCBpbnQgcil7CiAgICAgICAgaWYodT5yfHx2PGwpIHJldHVybiBJTkY7CiAgICAgICAgaWYodTw9bCYmcjw9dikgcmV0dXJuIHN0W2lkXTsKICAgICAgICBpbnQgbWlkPShsK3IpPj4xOwogICAgICAgIGRvd24oaWQpOwogICAgICAgIHJldHVybiBtaW4oZ2V0KHUsdixpZDw8MSxsLG1pZCksZ2V0KHUsdixpZDw8MXwxLG1pZCsxLHIpKTsKICAgIH0KICAgIGludCBnZXQoaW50IHUsIGludCB2KXsKICAgICAgICByZXR1cm4gZ2V0KHUsdiwxLDEsbik7CiAgICB9Cn0gc2VnX21pLHNlZ19yZXM7Cgp2b2lkIGRmc190dXJuKGludCB1KXsKICAgIGlzVHVyblt1XT10cnVlOwogICAgc2VnX3Jlcy51cGQodGluW3VdLHNlZ19taS5nZXQodGluW3VdKStjdXJ3KTsKICAgIGZvcihhdXRvIFt2LHddOmFkalt1XSkgaWYodiE9cGFyW3VdJiZ3PD1jdXJ3KXsKICAgICAgICBkZnNfdHVybih2KTsKICAgIH0KfQoKdm9pZCBtYWluX3NvbHZlKCl7CiAgICBpc1R1cm5bMV09dHJ1ZTsKICAgIEZPUihpLDIsbil7CiAgICAgICAgc2VnX21pLnVwZCh0aW5baV0sdG91dFtpXSx3ZVtpXSk7CiAgICB9CgogICAgRk9SKGksMSxtKXsKICAgICAgICBpbnQgdT1lZFtpXS5maS5maSwgdj1lZFtpXS5maS5zZSwgdz1lZFtpXS5zZTsgY3Vydz13OwogICAgICAgIGlmKGlzTVNUW2ldKXsKICAgICAgICAgICAgaWYoaXNUdXJuW3VdJiZpc1R1cm5bdl0pIGNvbnRpbnVlOwoKICAgICAgICAgICAgaWYoaXNUdXJuW3VdKSBkZnNfdHVybih2KTsKICAgICAgICAgICAgZWxzZSBpZihpc1R1cm5bdl0pIGRmc190dXJuKHUpOwogICAgICAgIH0KICAgICAgICBlbHNlewogICAgICAgICAgICBpbnQgcm1pPTFlOTsKICAgICAgICAgICAgdT1kc3UyLmZpbmQodSksIHY9ZHN1Mi5maW5kKHYpOwogICAgICAgICAgICB3aGlsZSghaXNBbmNlc3Rvcih1LHYpKXsKICAgICAgICAgICAgICAgIG1pbmkocm1pLHdlW3VdKTsKICAgICAgICAgICAgICAgIGRzdTIudW5pdGUocGFyW3VdLHUpOwogICAgICAgICAgICAgICAgdT1kc3UyLmZpbmQodSk7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUoIWlzQW5jZXN0b3Iodix1KSl7CiAgICAgICAgICAgICAgICBtaW5pKHJtaSx3ZVt2XSk7CiAgICAgICAgICAgICAgICBkc3UyLnVuaXRlKHBhclt2XSx2KTsKICAgICAgICAgICAgICAgIHY9ZHN1Mi5maW5kKHYpOwogICAgICAgICAgICB9CgogICAgICAgICAgICBtaW5pKHdlW3VdLHJtaSk7IG1pbmkod2Vbdl0scm1pKTsKICAgICAgICAgICAgc2VnX21pLnVwZCh0aW5bdV0sdG91dFt1XSxybWkpOwogICAgICAgICAgICBzZWdfcmVzLnVwZCh0aW5bdV0sdG91dFt1XSxybWkrY3Vydyk7CiAgICAgICAgfQogICAgfQoKICAgIEZPUihpLDIsbikgY291dDw8c2VnX3Jlcy5nZXQodGluW2ldKTw8J1xuJzsKfQoKdm9pZCBzb2x2ZSgpIHsKICAgIGlucHV0KCk7CiAgICBidWlsZF9tc3QoKTsKICAgIG1haW5fc29sdmUoKTsKfQo=