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