from heapq import heappop as pop, heappush as push N, M, X = map(int, input().split()) edges = [[] for _ in range(N)] for _ in range(M): u, v, C, T = map(int, input().split()) u -= 1 v -= 1 edges[u].append((v, C+T*X)) edges[v].append((u, C+T*X)) queue = [(0, 0)] ans = [-1]*N while queue: c, v = pop(queue) if ans[v] != -1: continue ans[v] = c for u, c_ in edges[v]: if ans[u] != -1: continue push(queue, (c+c_, u)) print((ans[-1]-1)//X+1)