#include "bits/stdc++.h" using namespace std; #define ll long long int #define rep(i,n) for( int i = 0; i < n; i++ ) #define rrep(i,n) for( int i = n; i >= 0; i-- ) #define REP(i,s,t) for( int i = s; i <= t; i++ ) #define RREP(i,s,t) for( int i = s; i >= t; i-- ) #define dump(x) cerr << #x << " = " << (x) << endl; #define INF 2000000000 #define mod 1000000007 #define INF2 1000000000000000000 #define int long long vector k; int N, M, K; vector> d[101]; bool dfs(int a, int cnt) { //cout << a << " " << cnt << endl; if (cnt == K) return true; rep(i, d[a].size()) { if (d[a][i].second == k[cnt]) { if (dfs(d[a][i].first, cnt + 1)) return true; } } return false; } signed main(void) { cin.tie(0); ios::sync_with_stdio(false); cin >> N >> M >> K; rep(i, M) { int a, b, c; cin >> a >> b >> c; d[a].push_back({ b, c }); d[b].push_back({ a, c }); } int x[K] = {}; rep(i, K) { int r; cin >> r; x[i] = r; } rrep(i, K - 1) { k.push_back(x[i]); } vector ans; rep(i, N) { if (dfs(i + 1, 0)) ans.push_back(i + 1); } cout << ans.size() << endl; rep(i, ans.size()) { if (i != 0) cout << " "; cout << ans[i]; } cout << endl; return 0; }