#include <bits/stdc++.h>
using namespace std;
#define INF 0x3f3f3f3f
int n,m,g[105][105],dis[105];
int a,b,c;
bool vis[105];
void di()
{
for(int i=1; i<=n; i++) {
dis[i]=g[1][i];
}
dis[1]=0;
vis[1]=true;
for(int i=2; i<=n; i++) {
int min_num=INF,pos;
for(int j=1; j<=n; j++) {
if(vis[j]==false&&dis[j]<min_num) {
min_num=dis[j];
pos=j;
}
}
vis[pos]=true;
for(int j=1; j<=n; j++) {
if(vis[j]==false&&dis[j]>(dis[pos]+g[pos][j])) {
dis[j]=dis[pos]+g[pos][j];
}
}
}
}
int main()
{
cin>>n>>m;
memset(g,INF,sizeof(g));
memset(dis,0,sizeof(dis));
memset(vis,false,sizeof(vis));
for(int i=0; i<m; i++) {
cin>>a>>b>>c;
g[a][b]=c;
g[b][a]=c;
}
di();
for(int i=1;i<=n;i++)
cout<<dis[i]<<" ";
return 0;
}
3 3
1 2 5
2 3 5
3 1 2
2