#include <bits/stdc++.h>
using namespace std;
#define endl '\n'
// #define int long long
using u32 = unsigned;
using i64 = long long;
using u64 = unsigned long long;
using PII = pair<int, int>;
const int INF = 0x3f3f3f3f;
int n,m;
int dijkstra(vector<vector<PII>>&graph){
vector<int>dist(n+1,INF);
priority_queue<PII,vector<PII>,greater<PII>>pq;
pq.push({0,1});
dist[1]=0;
while(!pq.empty()){
auto top=pq.top();
pq.pop();
auto d=top.first,u=top.second;
if(d>dist[u])continue;
for(auto &i:graph[u]){
auto v=i.first,w=i.second;
if(dist[v]>dist[u]+w){
dist[v]=dist[u]+w;
pq.push({dist[v],v});
}
}
}
}
void solve(){
cin>>n>>m;
vector<vector<PII>>graph(n+1);
int u,v,w;
for(int i=1;i<=m;i++){
cin>>u>>v>>w;
graph[u].push_back({v,w});
}
dijkstra(graph);
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
solve();
return 0;
}