import sys from collections import deque def main(): input = sys.stdin.read().split() ptr = 0 N = int(input[ptr]) ptr += 1 M = int(input[ptr]) ptr += 1 K = int(input[ptr]) ptr += 1 adj = [[] for _ in range(N + 1)] max_c = 0 for _ in range(M): u = int(input[ptr]) ptr += 1 v = int(input[ptr]) ptr += 1 c = int(input[ptr]) ptr += 1 adj[u].append((v, c)) adj[v].append((u, c)) if c > max_c: max_c = c low = 0 high = max_c while low < high: mid = (low + high) // 2 dist = [float('inf')] * (N + 1) dist[1] = 0 q = deque([1]) found = False while q: u = q.popleft() if u == N: found = True break for (v, c) in adj[u]: w = 1 if c > mid else 0 if dist[v] > dist[u] + w: dist[v] = dist[u] + w if w == 0: q.appendleft(v) else: q.append(v) if found and dist[N] <= K - 1: high = mid else: low = mid + 1 print(low) if __name__ == "__main__": main()