#include using namespace std; #define REP(i,last) for (int i=0;i p_ii; typedef long long ll; const int MAX_N = 100; const int MAX_K = 1000; map> G[MAX_N]; int d[MAX_K]; int main(){ int N, M, K; cin >> N >> M >> K; REP(i,M){ // aは0からN-1にする int a, b, c; cin >> a >> b >> c; --a; --b; G[a][c].push_back(b); G[b][c].push_back(a); } REP(i,K){ cin >> d[i]; } set candidate; REP(i,N) candidate.insert(i); REP(i,K){ int pay = d[i]; set new_candidate; for (auto c: candidate){ if (!G[c][pay].empty()) { for (auto t: G[c][pay]){ new_candidate.insert(t); } } } candidate = new_candidate; } printn(candidate.size()); for(auto c: candidate) { prints(c+1); } cout << endl; }