#include <iostream>
using namespace std;
int n, m;
int a[100][100], book[100], dis[100];
const int INF = 0x3f3f3f3f;
int main(){
int que[100];
int head, tail;
cin>>n>>m;
for(int i=1; i<=n; i++){
for(int j=1; j<=n; j++){
if(i == j){
a[i][j] = 0;
}else {
a[i][j] = INF;
}
}
}
int tx, ty, d;
for(int i=1; i<=m; i++){
cin>>tx>>ty>>d;
a[tx][ty] = d;
}
head = 1;
tail = 1;
book[1] = 1;
que[tail++] = 1;
dis[1] = 0;
for(int i=2; i<=n; i++){
dis[i] = INF;
}
while(head < tail){
int cur = que[head];
for(int i=1; i<=n; i++){
if(a[cur][i] < INF && dis[i] > dis[cur] + a[cur][i]){
dis[i] = dis[cur] + a[cur][i];
if(book[i] == 0){
book[i] = 1;
que[tail++] = i;
}
}
}
book[cur] = 0;
head++;
}
for(int i=1; i<=n; i++){
cout<<dis[i]<<' ';
}
return 0;
}