#include <bits/stdc++.h>
#define inf 10000000
using namespace std;
ifstream fin("dijkstra.in");
ofstream fout("dijkstra.out");
vector<pair<int,int> >L[50006];
int viz[50006], drum[50006];
priority_queue <pair<int, int> >q;
int n, m;
void Citire()
{
int i, x, y, z;
fin >> n >> m;
for(i = 1; i <= m; i++)
{
fin >> x >> y >> z;
L[x].push_back({y,z});
}
for(i = 2; i <= n; i++)
drum[i] = inf;
}
void Dijkstra()
{
int i, o, p, j;
q.push({0, 1});
while(!q.empty())
{
i = q.top().second;
q.pop();
if(!viz[i])
{
viz[i] = 1;
for(j = 0; j < L[i].size(); j++)
{
p = L[i][j].second;
o = L[i][j].first;
if(drum[o] > drum[i] + p)
{
drum[o] = drum[i] + p;
q.push({-drum[o], o});
}
}
}
}
for(i = 2; i <= n; i++)
fout << drum[i] << " ";
fout << "\n";
}
int main()
{
Citire();
Dijkstra();
return 0;
}