#include <bits/stdc++.h>
using namespace std;
int n, m;
int p[11];
vector<int> v[11];
int can(int x) {
  for (int i = 0; i < m; i++) {
    int cur = 0;
    for (int j = 0; j < v[i].size(); j++) {
      cur += (x & (1 << v[i][j])) > 0;
    }
    if (cur % 2 != p[i] % 2) return 0;
  }
  return 1;
}
int main() {
  cin >> n >> m;
  for (int i = 0; i < m; i++) {
    int x;
    cin >> x;
    while (x--) {
      int y;
      cin >> y;
      v[i].push_back(y - 1);
    }
  }
  for (int i = 0; i < m; i++) {
    cin >> p[i];
    int ans = 0;
    for (int i = 0; i < 1 << n; i++) {
      ans += can(i);
    }
    cout << ans << endl;
  }
}
