#include #include #include #include #include using namespace std; int main() { int N, M, K, a, b; cin >> N >> M >> K; vector>> e(N); for (int i = 0; i < M; i++) { long c; cin >> a >> b >> c; e[a - 1].emplace_back(b - 1, c); e[b - 1].emplace_back(a - 1, c); } vector d(K); for (long& i : d) cin >> i; reverse(d.begin(), d.end()); vector ans; for (int i = 0; i < N; i++) { queue::iterator>> f; for (pair& j : e[i]) { if (d.front() == j.second) f.emplace(j.first, d.begin() + 1); } while (!f.empty()) { if (f.front().second == d.end()) { ans.push_back(i + 1); break; } for (pair& j : e[f.front().first]) { if (*f.front().second == j.second) f.emplace(j.first, f.front().second + 1); } f.pop(); } } cout << ans.size() << endl; for (int& i : ans) cout << i << ' '; }