#include using namespace std; using ll = long long; #define rep(i, s, e) for (int i = (int)(s); i < (int)(e); ++i) #define all(a) (a).begin(),(a).end() #include using namespace atcoder; int main() { cin.tie(nullptr); ios_base::sync_with_stdio(false); int N, M; cin >> N >> M; ll sum = 0; mf_graph G(N + M + 2); rep(i, 0, N) { ll A; cin >> A; G.add_edge(N + M, i, A); } rep(i, 0, M) { ll B; cin >> B; sum += B; G.add_edge(i + N, N + M + 1, B); } rep(i, 0, M) { int K; cin >> K; rep(j, 0, K) { int C; cin >> C; --C; G.add_edge(C, N + i, 1ll << 60); } } cout << sum - G.flow(N + M, N + M + 1) << '\n'; }