''' Created on Mar 10, 2015 @author: user ''' value = [] seen = [] cons = [] edges = [] def dfs(x): seen[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) 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 seen[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