import sequtils,algorithm,strutils,intsets,tables template times*(n:int,body) = (for _ in 0.." .} proc scan(): int = while true: let k = getchar_unlocked() if k < '0': break result = 10 * result + k.ord - '0'.ord let n = scan() let m = scan() let k = scan() # var oks = initIntSet() # for i in 1..n: oks.incl i # var P = newSeqWith(n+1,newSeqWith(n+1,newSeq[int]())) # m.times: # let a = scan() # let b = scan() # let c = scan() # P[a][b] &= c # P[b][a] &= c # var nexts = initIntSet() # k.times: # let d = scan() # for ok in oks: # for p in P[ok]: # for pi in p: # if d notin pi: continue # nexts.incl d # oks = nexts # echo oks const INF = 10003 proc hash(n:int) : int = n mod INF var P = newSeq[seq[tuple[a,b:int]]](INF) m.times: let a = scan() let b = scan() let c = scan() if P[c.hash].len == 0 : P[c.hash] = @[] P[c.hash] &= (a,b) let D = newSeqWith(k,scan()) var answers = initIntSet() for p in P[D[0].hash]: answers.incl p.a answers.incl p.b for i in 1..