#include using namespace std; int main() { int N, M, K, d[1010]; vector> V[110]; cin >> N >> M >> K; for (int i = 0; i < M; i++) { int a, b, c; cin >> a >> b >> c; a--; b--; V[a].push_back({b, c}); V[b].push_back({a, c}); } for (int i = 0; i < K; i++) { cin >> d[i]; } vector possible(N, true); for (int i = 0; i < K; i++) { vector nxt(N, false); for (int now = 0; now < N; now++) { if (possible[now]) { for (auto& road : V[now]) { if (road.second == d[i]) nxt[road.first] = true; } } } possible = nxt; } vector ans; for (int i = 0; i < N; i++) { if (possible[i]) ans.push_back(i + 1); } cout << (int)ans.size() << endl; for (auto& x : ans) cout << x << " "; cout << endl; }