#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #define rep(i,n) for (int i = 0; i < (n); ++i) using namespace atcoder; using namespace std; typedef long long int ll; typedef modint998244353 mint; ll gcd(ll a, ll b) { if (a < b)swap(a, b); if (b == 0)return a; return gcd(b, a % b); } int lcm(int a, int b) { return a * b / gcd(a, b); } /* 解説動画参考 解説ブログ参考 */ int main() { int Q; Q = 1; //cin >> Q; while (Q--) { int n, m,k; cin >> n >> m >> k; vectora(m), b(m), c(m); for (int i = 0; i < m; i++) { cin >> a[i] >> b[i] >> c[i]; } vectord(k); for (int i = 0; i < k; i++)cin >> d[i]; vector>p(1005, vector(110)); for (int i = 0; i < m; i++) { if (d[0] == c[i]) { p[0][a[i]] = 1; p[0][b[i]] = 1; } } for (int i = 1; i < k; i++) { for (int j = 0; j < m; j++) { if (d[i] == c[j]) { if (p[i - 1][a[j]])p[i][b[j]] = 1; if (p[i - 1][b[j]])p[i][a[j]] = 1; } } } vector ans; for (int i = 0; i <= n; i++) { if(p[k-1][i])ans.push_back(i); } cout << ans.size() << endl; for (int i = 0; i < ans.size(); i++) { cout << ans[i] << " "; } } return 0; }