#include <fstream> #include <iostream> #include <vector> #include<cstdlib> #include<cstring> #include<bitset> using namespace std; const int MAX_N = 5005; int N, K; int special[MAX_N]; vector<int> G[MAX_N]; bitset<MAX_N>v; void DFS(int start) { v[start]=1; for(vector<int>::iterator i=G[start].begin();i<G[start].end();++i) if(!v[*i]) DFS(*i); } int main (void) { cin >> N >> K; for (int i = 1; i <= K; ++i) cin >> special[i]; for (int i = 1, node; i <= N; ++i) { cin >> node; for (int value = 0; cin.peek () != '\n' && !cin.eof(); ) { cin >> value; G[node].push_back(value); } } int maxx = -1; int nod; for(int i=1 ; i<=K ; i++) { v.reset(); int root = special[i]; DFS(root); int x = v.count(); if ( x > maxx ) maxx = x, nod = root; } cout << nod; return 0; }