import networkx as nx
N, W = map(int, input().split())
A = list(map(int, input().split()))
G = nx.DiGraph()
G.add_node("S")
G.add_node("T")
G.add_nodes_from(range(1, N + 1))
INF = 10**18
for i, a in enumerate(A, 1):
G.add_edge(i, "T", capacity=a)
G.add_edge("S", i, capacity=W)
for i in range(1, N + 1):
k, *c = map(int, input().split())
for x in c:
G.add_edge(i, x, capacity=INF)
print(sum(A) - nx.minimum_cut_value(G, "S", "T"))