์ต๋จ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์์ผ๋ฉฐ ๋์ค์ ์ง๋ฆ๊ธธ์ด ์กด์ฌํ๋ค. ํญ์ +1 ์นธ์ ํ ์ ์๊ณ , ์ง๋ฆ๊ธธ์ด ์์ผ๋ฉด ์ง๋ฆ๊ธธ๋ก ์ด๋ํ๋ค. ๊ฐ ์์น์ ๋ํด ํด๋น ์์น์ ๋๋ฌํ ์ ์๋ ์ต๋ ๊ฑฐ๋ฆฌ๋ ํด๋น ์์น์ ๊ฐ์ด ๋๋ค. ๋ง์ฝ 5km ์์น์ ์๋ค๋ฉด ์ง๋ฆ๊ธธ ์์ด ๋๋ฌํ๋๋ฐ๋ 5km ์ด์์ด ๊ฑธ๋ฆด ์ ์๋ค.
์ญ์ฃผํ์ด ๋์ง ์๋๋ค๋ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ชป ๋ณด๊ณ ์ง๋ฆ๊ธธ์ ์๋ฐฉํฅ ์ค์ ํ๋ค๊ฐ ์๊ฐ์ด๊ณผ ๋ ๋ป
# ์ง๋ฆ๊ธธ
import heapq
from collections import defaultdict
def dijkstra(start):
Q = [(0, start)]
dist = [i for i in range(D+1)]
while Q:
w, now = heapq.heappop(Q)
if now > D or w > dist[now]:
continue
dist[now] = w
for next, next_w in node[now]:
heapq.heappush(Q, (w + next_w, next))
heapq.heappush(Q, (w + 1, now + 1))
return dist[-1]
N, D = map(int, input().split())
node = defaultdict(list)
for _ in range(N):
s, e, d = map(int, input().split())
node[s].append((e, d))
print(dijkstra(0))