#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin ("dijkstra.in");
ofstream fout ("dijkstra.out");
int n, m, d[50001];
const int inf = 2e9;
vector < pair < int, int > > v[50001];
priority_queue < pair < int, int > > q;
bool ver[50001];
void dijkstra (int nc) {
for (int i = 2; i <= n; i++)
d[i] = inf;
q.push ({0, nc});
while (not q.empty ()) {
int nc = q.top ().second;
q.pop ();
if (not ver[nc]) {
for (int i = 0; i < v[nc].size (); i++) {
int nv = v[nc][i].second;
int cnv = v[nc][i].first;
if (d[nc] + cnv < d[nv]) {
d[nv] = d[nc] + cnv;
q.push ({-d[nv], nv});
}
}
ver[nc] = true;
}
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
fin >> n >> m;
for (int i = 1; i <= m; i++) {
int x, y, c;
fin >> x >> y >> c;
v[x].push_back ({c, y});
}
dijkstra (1);
for (int i = 2; i <= n; i++)
if (d[i] == inf)
fout << "0 ";
else
fout << d[i] << ' ';
return 0;
}