#include using namespace std; #define rep(i,n) for(int i = 0;i<((int)(n));i++) #define reg(i,a,b) for(int i = ((int)(a));i<=((int)(b));i++) #define irep(i,n) for(int i = ((int)(n)-1);i>=0;i--) #define ireg(i,a,b) for(int i = ((int)(b));i>=((int)(a));i--) typedef long long ll; typedef pair mp; ll mod = 1e9+7; //LLONG_MIN /* */ ll n,m,d[2][100010]; vector v[100010],c[100010]; queue Q; int main(void){ cin>>n>>m; rep(i,m){ ll a,b,x; cin>>a>>b>>x; v[a].push_back(b); v[b].push_back(a); c[a].push_back(x); c[b].push_back(x); } reg(i,1,n){ d[0][i]=1e18; d[1][i]=1e18; } d[0][1]=0; d[1][1]=0; Q.push(1); while(!Q.empty()){ ll p=Q.front();Q.pop(); rep(i,v[p].size()){ bool ok=false; ll q=v[p][i],di=c[p][i]; if(d[0][q]>d[0][p]+di){ d[0][q]=d[0][p]+di; ok=true; } if(d[1][q]>min(d[0][p],d[1][p]+di)){ d[1][q]=min(d[0][p],d[1][p]+di); ok=true; } if(ok)Q.push(q); } } reg(i,1,n){ cout<