def main(): import sys input = sys.stdin.readline import heapq N,M,C = list(map(int,input().split())) edge = [[] for _ in range(N)] for _ in range(M): u,v,w = list(map(int,input().split())) u -= 1;v -= 1 edge[u].append((v,w+C)) edge[v].append((u,w+C)) q = [(0,0)] INF = 10**18 from_0 =[INF for _ in range(N)] while(q): v,now = heapq.heappop(q) if(from_0[now] <= v):continue from_0[now] = v for i,w in edge[now]: if(from_0[i] > v+w):heapq.heappush(q,(v+w,i)) q = [(0,N-1,0)] from_N = [[INF,INF] for _ in range(N)] while(q): v,now,state = heapq.heappop(q) if(from_N[now][state] <= v):continue from_N[now][state] = v for i,w in edge[now]: if(from_N[i][0] > v+w):heapq.heappush(q,(v+w,i,0)) if(state == 0 and from_N[i][1] > v+C):heapq.heappush(q,(v+C,i,1)) ans = [] for i in range(1,N): ans.append(min(from_0[-1],from_0[i] + min(from_N[i]))) print("\n".join(map(str,ans))) main()