#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';
}