#include <iostream> #include <vector> #include <stack> #include <set> using namespace std; int main() { int n,k; cin>>n>>k; vector<vector<int>> Adj(n+1); vector<int> gr(n+1,0); vector< set<int> > infl(n+1); vector<int> x(k); for(int i=0;i<k;++i) cin>>x[i]; while(cin.get()!='\n') ; for(int i=0;i<n;++i){ int to; cin>>to; int c; for(;;){ while((c=cin.get())==' ') ; if(c=='\n'||c==EOF) break; else{ int from; cin.putback(c); cin>>from; Adj[from].push_back(to); gr[to]++; } } } stack<int> nullgr; for(int i=1;i<=n;++i) if(!gr[i]) nullgr.push(i); while(!nullgr.empty()){ int v=nullgr.top(); nullgr.pop(); for(int i : Adj[v]){ infl[i].insert(infl[v].begin(),infl[v].end()); infl[i].insert(v); --gr[i]; if(gr[i]==0) nullgr.push(i); } } unsigned mx=0; int imx=n+1; for(int i=0;i<k;++i) if(mx<infl[x[i]].size() || (mx==infl[x[i]].size() && x[i]<imx) ){ mx=infl[x[i]].size(); imx=x[i]; } cout<<imx<<'\n'; }