#include using namespace std; int main() { #ifdef DEBUG std::ifstream in("/home/share/inputf.in"); std::cin.rdbuf(in.rdbuf()); #endif int N, M, K; set mat[100][100]; int64_t d[1000]; int exist[2][100]; cin >> N >> M >> K; for(int i = 0; i < N; i++) { for(int j = 0; j < N; j++) { mat[i][j] = set(); } } for(int i = 0; i < M; i++) { int64_t a, b, c; cin >> a >> b >> c; a--, b--; mat[b][a].insert(c); mat[a][b].insert(c); } for(int i = 0; i < K; i++) { cin >> d[i]; } for(int i = 0; i < 100; i++) { exist[0][i] = 1; exist[1][i] = 0; } for(int k = 0; k < K; k++) { int b = k & 1; for(int i = 0; i < 100; i++) { exist[1-b][i] = 0; } for(int i = 0; i < N; i++) { if(!exist[b][i]) continue; for(int j = 0; j < N; j++) { if (mat[i][j].count(d[k])) { exist[1-b][j] = 1; break; } } } } vector ans(0); for(int i = 0; i < N; i++) { if(exist[K&1][i]) ans.push_back(i + 1); } cout << ans.size() << endl; for(int i = 0; i < ans.size(); i++) { cout << ans[i]; if(i != ans.size() - 1) cout << " "; } cout << endl; return 0; }