# dp[i] = 街iにいる可能性があればTrue # O(MK) import sys readline = sys.stdin.readline N,M,K = map(int,readline().split()) G = [[] for i in range(N)] for _ in range(M): a,b,c = map(int,readline().split()) G[a - 1].append([b - 1, c]) G[b - 1].append([a - 1, c]) D = list(map(int,readline().split())) dp = [True] * N for d in D: new_dp = [False] * N for v in range(N): if not dp[v]: continue for child,cost in G[v]: if cost != d: continue new_dp[child] = True dp = new_dp ans = [] for i in range(N): if dp[i]: ans.append(i + 1) print(len(ans)) print(*ans)