#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<cmath>
#include<algorithm>
using namespace std;
int n,m,INF=99999999;
int e[1001][1001],road[1001],jdg[1001];
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)
{
if(i==j)
e[i][j]=0;
else
e[i][j]=INF;
}
for(int i=1;i<=m;i++)
{
int a,b,c;
cin>>a>>b>>c;
e[a][b]=c;
}
for(int i=1;i<=n;i++)
road[i]=e[1][i];
jdg[1]=1;
for(int i=1;i<=n-1;i++)
{
int min=INF,u;
for(int j=1;j<=n;j++)
if(jdg[j]==0&&road[j]<min)
{
min=road[j];
u=j;
}
jdg[u]=1;
for(int j=1;j<=n;j++)
if(e[u][j]<INF&&road[j]>road[u]+e[u][j])
road[j]=road[u]+e[u][j];
}
for(int i=1;i<=n;i++)
cout<<road[i]<<" ";
cout<<endl;
return 0;
}