#include <fstream>
#include <vector>
#include <algorithm>
#include <queue>
using namespace std;
ifstream cin("dijkstra.in");
ofstream cout("dijkstra.out");
const int inf=1e9;
vector<int>v[50005],c[50005];
queue<int>q;
int n,m,x,a,b,y,d[50005],lung[50005];
int main()
{
cin>>n>>m;
for(int i=1;i<=m;i++)
{
cin>>a>>b>>y;
v[a].push_back(b);
c[a].push_back(y);
}
for(int i=2;i<=n;i++)
d[i]=inf;
for(int i=1;i<=n;i++)
lung[i]=v[i].size();
q.push(1);
d[1]=1;
while(!q.empty())
{
x=q.front();
q.pop();
for(int i=0;i<lung[x];i++)
{
int cost=c[x][i];
y=v[x][i];
if(d[x]+cost<d[y])
{
d[y]=d[x]+cost;
q.push(y);
}
}
}
for(int i=2;i<=n;i++)
if(d[i]==inf)
cout<<"0 ";
else
cout<<d[i]-1<<" ";
return 0;
}