import heapq N,M,X = map(int,input().split()) G = {i:[] for i in range(1,N+1)} for _ in range(M): u,v,c,t = map(int,input().split()) if u==v:continue G[u].append((v,t*X+c)) G[v].append((u,t*X+c)) INFTY = 10**16 dist = [INFTY for _ in range(N+1)] dist[1] = 0 visited = [0]*(N+1) heap=[(0,1)] while heap: d,u = heapq.heappop(heap) if d>dist[u]:continue visited[u] = 1 for v,c in G[u]: if visited[v]==0 and d+c=INFTY: print(-1) else: print((dist[N]+X-1)//X)