    #D
    import math
    import numpy as np
    N, M = map(int, input().split())
    route_list = [[0 for i in range(N)] for i in range(N)]
    for i in range(M):
        L, R, C = map(int, input().split())
        for i in range(L, R):
            for j in range(i, R):
                if route_list[i-1][j] == 0:
                    route_list[i-1][j] = C
                else:
                    route_list[i-1][j] = min(route_list[i-1][j], C)
     
    node_num = len(route_list) #ノードの数
     
    unsearched_nodes = list(range(node_num)) # 未探索ノード
    distance = [np.inf] * node_num # ノードごとの距離のリスト
    previous_nodes = [-1] * node_num # 最短経路でそのノードのひとつ前に到達するノードのリスト
    distance[0] = 0 # 初期のノードの距離は0とする
     
    # @GDaigo さんのコメントより関数の追加 2017/03/18
    def get_target_min_index(min_index, distance, unsearched_nodes):
        start = 0
        while True:
            index = distance.index(min_index, start)
            found = index in unsearched_nodes
            if found:
                return index
            else:
                start = index + 1
     
    while(len(unsearched_nodes) != 0): #未探索ノードがなくなるまで繰り返す
        # まず未探索ノードのうちdistanceが最小のものを選択する
        posible_min_distance = np.inf # 最小のdistanceを見つけるための一時的なdistance。初期値は inf に設定。
        for node_index in unsearched_nodes: # 未探索のノードのループ
            if posible_min_distance > distance[node_index]: 
                posible_min_distance = distance[node_index] # より小さい値が見つかれば更新
        target_min_index = get_target_min_index(posible_min_distance, distance, unsearched_nodes) # 未探索ノードのうちで最小のindex番号を取得
        unsearched_nodes.remove(target_min_index) # ここで探索するので未探索リストから除去
     
        target_edge = route_list[target_min_index] # ターゲットになるノードからのびるエッジのリスト
        for index, route_dis in enumerate(target_edge):
            if route_dis != 0:
                if distance[index] > (distance[ target_min_index] + route_dis):
                    distance[index] = distance[ target_min_index] + route_dis # 過去に設定されたdistanceよりも小さい場合はdistanceを更新
                    previous_nodes[index] =  target_min_index #　ひとつ前に到達するノードのリストも更新
     
    if distance[node_num - 1] is np.inf:
        print("-1")
    else:
        print(distance[node_num - 1])