import sys
from collections import defaultdict, deque
n = int(sys.stdin.readline().rstrip())
m = int(sys.stdin.readline().rstrip())
graph = [list(map(int, sys.stdin.readline().rstrip().split())) for _ in range(n)]
visited = defaultdict(bool)
order = list(map(int, sys.stdin.readline().rstrip().split()))
for i in range(len(order)):
order[i] -= 1
q = deque()
q.append(order[0])
visited[order[0]] = True
while q:
node = q.popleft()
for i in range(n):
if node == i:
continue
if not visited[i] and graph[node][i] == 1:
visited[i] = True
q.append(i)
flag = True
for i in order:
if not visited[i]:
flag = False
print('NO')
break
if flag:
print('YES')
여행 계획에 해당하는 노드를 방문할 수 있는지를 BFS를 통해 확인했다.