第三题

from collections import defaultdict
import heapq
class Node(object):
    def __init__(self,time,l,index):
        self.time = time
        self.l = l
        self.index = index
    def __lt__(self, other):
        if self.time < other.time:
            return True
        elif self.time  == other.time:
            return self.index < other.index
        else:
            return False
N,M = map(int, input().split())
times = list(map(int, input().split()))
d = defaultdict(set)
l = []
#heapq.heapify(l)
for i in range(M):
    tmp = list(map(int, input().split()))
    for e in tmp[:-1]:
        d[tmp[-1]].add(e)


for i in range(N):
    #print(times[i], d[i+1],i+1)
    heapq.heappush(l,Node(times[i], d[i+1], i+1))

res = []
while len(l) > 0:
    tmp = []
    node = None
    while len(l) > 0:
        node = heapq.heappop(l)
        if len(node.l) > 0:
            tmp.append(node)
        else:
            res.append(node.index)
            break
    for e in tmp:
        heapq.heappush(l, e)
    if node != None:
        for i in range(len(l)):
            if node.index in l[i].l:
                l[i].l.remove(node.index)
for e in res:
    print(e, end=" ")