//可是spfa会被卡得很惨很惨wa
//待补充dij
#include <iostream>
#include <math.h>
#include <string.h>
#include <vector>
#include <map>
#include <queue>
#include <stdio.h>
#include <algorithm>
#include <cstdio>
using namespace std;
int t = 0, flag[10005], dis[10005], head[10005], book[10005];
struct info {
    int to, next, lenth;
} edge[600000];
queue<int> q;
void add(int from, int to, int dis) {
    edge[++t].next = head[from];
    edge[t].to = to;
    edge[t].lenth = dis;
    head[from] = t;
}
int main() {
    int a, b, c, n, m, sta, end, min, u;
    //freopen("lys.in","r",stdin);
    cin >> m>> n;
    
    
    for (int i = 1; i <= m; i++) 
    {
        scanf("%d %d %d", &a, &b, &c);
        add(a, b, c);
        add(b,a,c);
    }
    for (int i = 1; i <= n; i++) {
        dis[i] = 999999;
    }
    sta=n;
    dis[sta] = 0;
    book[sta] = 1;
    q.push(sta);
    while (!q.empty()) {
        
        u = q.front();
        book[u] = 0;
        for (int k = head[u]; k != 0; k = edge[k].next) {
            
            if (dis[edge[k].to] > dis[u] + edge[k].lenth) 
            {   
                dis[edge[k].to] = dis[u] + edge[k].lenth;
    
                if (book[edge[k].to] == 0) 
                {
                    book[edge[k].to] = 1;
                    q.push(edge[k].to);
                }
            }
        }
        q.pop();
    }
        printf("%d ",dis[1]);
}