#!/usr/bin/env python3
import heapq as hq
import sys
n,m,d=map(int,input().split(" "))
fwd = [[] for i in range(0,n+1)]
back = [[] for i in range(0,n+1)]
for i in range (0,m):
   a,b,c=map(int,input().split(" "))
   fwd[a].append([b,c])
   back[b].append([a,c])
seen = [int(input()) for i in range(0,d)]
seen.sort()
NEVER = 2**63-1
def djik(e, s):
   v = [NEVER]*(n+1)
   q = [(0,s)]
   while len(q) > 0:
      t,a = hq.heappop(q)
      if v[a]>t:
         v[a]=t
         for b,cost in e[a]:
            hq.heappush(q, (t+cost,b))
   return v
from1 = djik(fwd, 1)
fromn = djik(back, n)
end = from1[n]
v = [NEVER]*(n+1)
q = [(0,1)]
sp = 0
while len(q) > 0:
   t,a = hq.heappop(q)
   while sp < len(seen) and seen[sp] <= t:
      sp += 1
   if t == from1[a] and from1[a] + fromn[a] == end and v[a]>t:
      v[a]=t
      for b,cost in fwd[a]:
         if from1[b]+fromn[b]==end and (sp==len(seen) or t+cost<=seen[sp]):
            hq.heappush(q, (t+cost,b))
if v[n] != end or seen[-1] > end:
   print(0)
   sys.exit(0)
b = n
path = [b]
while b != 1:
   nxt = -1
   for a,cost in back[b]:
      if v[a] == from1[a] and v[a] + cost == v[b]:
         if nxt >= 0:
            print(1)
            sys.exit(0)
         nxt = a
   b = nxt
   path.append(b)
path.reverse()
print(len(path))
for i in range(0,len(path)):
   print(path[i])
