#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
vector<int>w[105],e[105];
int dis[105];
bool vis[105];
int n,m;
void dij(){
int temp;
memset(vis,0,sizeof(vis));
memset(dis,inf,sizeof(dis));
dis[1]=0;//起点
for(int i=0;i<e[1].size();i++){
dis[e[1][i]]=w[1][i];
}
vis[1]=1;
for(int j=1;j<=n;j++){
int _min=inf;
for(int k=1;k<=n;k++){
if(vis[k]==0 && dis[k]<_min){
_min=dis[k];
temp=k;
}
}
vis[temp]=1;
for(int h=0;h<e[temp].size();h++){
if(dis[e[temp][h]]>dis[temp]+w[temp][h])// e[temp][h]
dis[e[temp][h]]=dis[temp]+w[temp][h];
}
}
for(int l=1;l<=n;l++)
cout<<dis[l]<<' ';
cout<<endl;
}
int main(){
cin>>n>>m;
int x,y,v;
for(int i=1;i<=m;i++){
cin>>x>>y>>v;
e[x].push_back(y);
e[y].push_back(x);
w[x].push_back(v);
w[y].push_back(v);
}
dij();
return 0;
}