## https://yukicoder.me/problems/no/2713 from atcoder.maxflow import MFGraph MAX_CAPACITY = 10 ** 18 def main(): N, M = map(int, input().split()) A = list(map(int, input().split())) B = list(map(int, input().split())) values = [] for _ in range(M): t = tuple(map(int, input().split())) values.append(t) # 燃やす埋める問題として解く mf_graph = MFGraph(2 + N + M) for i in range(N): mf_graph.add_edge(0, 1 + i, A[i]) for i in range(M): mf_graph.add_edge(1 + N + i, 1 + N + M, B[i]) for from_i in range(M): v = values[from_i] for to_i in v[1:]: mf_graph.add_edge(to_i, 1 + N + from_i, MAX_CAPACITY) ans = mf_graph.flow(0, 1 + N + M) print(sum(B) - ans) if __name__ == "__main__": main()