#include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define FOR(I,A,B) for(int I = (A); I < (B); ++I) typedef pair P; int main(){ int n,m,k; cin >> n >> m >> k; vector > g(n+1); FOR(i,0,m){ int a, b; long long c; cin >> a >> b >> c; g[a].push_back(P(b,c)); g[b].push_back(P(a,c)); } long long d[k]; FOR(i,0,k){ cin >> d[i]; } bool dp[k+1][n+1]; FOR(i,0,k+1){ FOR(j,0,n+1){ if(i == 0) dp[i][j] = true; else dp[i][j] = false; } } FOR(i,0,k){ FOR(j,0,n+1){ if(!dp[i][j]) continue; for(auto to : g[j]){ if(to.second == d[i]){ dp[i+1][to.first] = true; } } } } vector ans; FOR(i,1,n+1){ if(dp[k][i]){ ans.push_back(i); } } cout << ans.size() << endl; FOR(i,0,ans.size()){ printf("%d%c", ans[i], i == ans.size() - 1 ? '\n' : ' '); } return 0; }