using namespace std;
#define int long long
const int INF=(1LL<<31)-1;
const int maxn = 3e5+10;
const int maxm = 3e5+10;
int vis[maxn],head[maxm],tt=0;
long long dis[maxn];
struct b{
int to,nxt,d;
}eadg[maxm];
void add(int x,int y,int z){
eadg[tt].to=y;
eadg[tt].d=z;
eadg[tt].nxt=head[x];
head[x]=tt++;
}
struct Point {
int dd,p;
bool operator <(const Point &x) const {
return dd>x.dd;
}
};
int n,m,s = 1;
void jjb(){
for(int i=1;i<=n;i++){
dis[i]=INF;
}
dis[s]=0;
memset(vis,0,sizeof(vis));
priority_queue<Point> q;
Point a;
a.dd=0;
a.p=s;
q.push(a);
while(!q.empty()){
a=q.top();
q.pop();
int x=a.p;
if(vis[x]==1)continue;
vis[x]=1;
for(int j=head[x];j!=-1;j=eadg[j].nxt){
int v=eadg[j].to;
if(dis[v]>dis[x]+1LL*eadg[j].d){
dis[v]=dis[x]+1LL*eadg[j].d;
a.dd=dis[v];
a.p=v;
q.push(a);
}
}
}
}
main(void){
cin>>n>>m;
memset(head,-1,sizeof(head));
while(m--){
int u,v,w;
cin>>u>>v>>w;
add(u,v,w);
}
jjb();
for(int i=1;i<=n;i++){
if(dis[i] == INF){
cout << "-1 ";
continue;
}
cout<<dis[i]<<" ";
}
return 0;
}```