#include <stdio.h>
#include <limits.h>
#define N 5000
int main() {
    int n, m;
    scanf("%d %d", &n, &m);
    int vcost[N][N];
    int distance[N];
    int vstate[N];
    for (int i = 0; i < N; i++) {
        for (int j = 0; j < N; j++) {
            vcost[i][j] = (i == j) ? 0 : INT_MAX;
        }
    }
    for (int i = 0; i < m; i++) {
        int u, v, w;
        scanf("%d %d %d", &u, &v, &w);
        vcost[u - 1][v - 1] = w;
        vcost[v - 1][u - 1] = w;
    }
    for (int i = 0; i < N; i++) {
        vstate[i] = 0;
        distance[i] = vcost[0][i];
    }
    vstate[0] = 1;

    for (int i = 1; i < N; i++) {
        int min = INT_MAX;
        int k = 0;
        for (int j = 0; j < N; j++) {
            if (vstate[j] == 0 && distance[j] < min) {
                k = j;
                min = distance[j];
            }
        }
        vstate[k] = 1;
        for (int j = 0; j < N; j++) {
            if (vstate[j] == 0 && vcost[k][j] != INT_MAX) {
                if (( distance[k] + vcost[k][j] < distance[j])) {
                    distance[j] = distance[k] + vcost[k][j];
                }

            }
        }
    }
    if (distance[n - 1] != INT_MAX) {
        printf("%d\n", distance[n - 1]);
    } else {
        printf("-1\n");
    }
    return 0;
}