N,M,K = map(int,input().split()) G = [[] for i in range(N)] for _ in range(M): a,b,c = map(int,input().split()) G[a - 1].append([b - 1, c]) G[b - 1].append([a - 1, c]) D = list(map(int,input().split())) dp = [[False] * N for i in range(K + 1)] # dp[k][i] = 次に通る道路の指示がk番目で、i番目にいる for i in range(N): dp[0][i] = True for k in range(K): for i in range(N): if not dp[k][i]: continue for child, c in G[i]: if D[k] != c: continue dp[k + 1][child] = True ans = [] for i in range(N): if dp[-1][i]: ans.append(i + 1) print(len(ans)) print(*ans)