package main import ( "bufio" "fmt" "os" "strconv" ) var sc = bufio.NewScanner(os.Stdin) var rdr = bufio.NewReaderSize(os.Stdin, 1000000) func main() { sc.Split(bufio.ScanWords) n, m, k := nextInt(), nextInt(), nextInt() loads, towns := make([][3]int, 0, 1000), make([]bool, n+1) for i := 0; i < m; i++ { a, b, c := nextInt(), nextInt(), nextInt() loads = append(loads, [3]int{a, b, c}) } times := make([]int, k) for i := range times { times[i] = nextInt() } for _, v := range loads { if v[2] == times[0] { towns[v[0]] = true towns[v[1]] = true } } for _, c := range times[1:] { next := make([]bool, n+1) for _, v := range loads { if v[2] != c { continue } if towns[v[0]] { next[v[1]] = true } if towns[v[1]] { next[v[0]] = true } } towns = next } ans := make([]int, 0, 100) for i, v := range towns { if v { ans = append(ans, i) } } fmt.Println(len(ans)) s := fmt.Sprint(ans) fmt.Println(s[1 : len(s)-1]) } func nextLine() string { sc.Scan() return sc.Text() } func nextInt() int { i, _ := strconv.Atoi(nextLine()) return i }