'''
Created on Mar 10, 2015

@author: user
'''
value = []
seen = []
cons = []
edges = []
gseen = []

def dfs(x):
    seen[x] = True
    gseen[x] = True
    value[x] = 1
    for element in edges[x]:
        if not seen[element]:
            value[x] += dfs(element)
    return value[x]

def initList(l, n):
    for _ in range(n+1):
        l.append([])
        seen.append(False)
        gseen.append(False)
        value.append(0)
        
def initSeen(n):
    for i in range(n):
        seen[i] = False

if __name__ == '__main__':
    n, m = map(int, raw_input().split(' '))
    initList(edges, n)
    cons = map(int, raw_input().split(' '))
    for i in range(n):
        ch = map(int, raw_input().split(' '))
        for j in range(1, len(ch), 1):
            edges[ch[0]].append(ch[j])

    mx = 0
    node = 0
    for i in range(len(cons)):
        if not gseen[cons[i]]:
            initSeen(n)
            x = dfs(cons[i])
            if x > mx:
                mx = x
                node = cons[i]
            elif x == mx and node > cons[i]:
                node = cons[i]
    print node