from heapq import heappop,heappush n,m,x = map(int,input().split()) adj = [[] for _ in range(n)] for _ in range(m): u,v,a,b = map(int,input().split()) adj[u-1].append((v-1,a,b)) adj[v-1].append((u-1,a,b)) ok = -1; ng = 10**9+1 while ng-ok>1: mid = (ok+ng)//2 t = [0]+[10**18+1]*(n-1); f = [False]*n; hq = [(0,0)] while hq: d,p = heappop(hq) if f[p]: continue f[p] = True for c,a,b in adj[p]: if b>=mid and t[c]>d+a: t[c] = d+a; heappush(hq,(t[c],c)) if t[n-1]<=x: ok = mid else: ng = mid print(ok)