#include <bits/stdc++.h>
using namespace std;
int n, m, g, s, T;
char ss[10005];
int v[10005];
int Head[20001], To[200001], Next[200001], W[200001], t1 = 1;
void add(int a, int b, int c) {
  t1++;
  Next[t1] = Head[a];
  Head[a] = t1;
  To[t1] = b;
  W[t1] = c;
}
int dep[200001];
queue<int> q;
bool bfs() {
  for (int i = 1; i <= T; i++) dep[i] = -1;
  dep[s] = 0;
  q.push(s);
  while (!q.empty()) {
    int curr = q.front();
    q.pop();
    for (int i = Head[curr]; i; i = Next[i]) {
      if (W[i] > 0 && dep[To[i]] == -1) {
        dep[To[i]] = dep[curr] + 1;
        q.push(To[i]);
      }
    }
  }
  return dep[T] != -1;
}
int cur[20001];
bool vis[20001];
int dfs(int curr, int sum) {
  if (curr == T) return sum;
  vis[curr] = 1;
  int t = sum;
  for (int i = cur[curr]; i; i = Next[i]) {
    cur[curr] = Next[i];
    if (!vis[To[i]] && W[i] > 0 && dep[To[i]] == dep[curr] + 1) {
      int g = dfs(To[i], min(t, W[i]));
      t -= g;
      W[i] -= g;
      W[i ^ 1] += g;
      if (t == 0) break;
    }
  }
  vis[curr] = 0;
  if (t == sum) dep[curr] = -1;
  return sum - t;
}
int Dinic() {
  int ans = 0;
  while (bfs()) {
    for (int i = 1; i <= T; i++) cur[i] = Head[i];
    ans += dfs(s, 2e9);
  }
  return ans;
}
int main() {
  int tot = 0, sum = 0;
  scanf("%d%d%d", &n, &m, &g);
  s = n + m + 1, T = n + m + 2;
  for (int i = 1; i <= n; i++) scanf(" %c", &ss[i]);
  for (int i = 1; i <= n; i++) scanf("%d", &v[i]), tot -= v[i], sum += v[i];
  for (int i = 1; i <= n; i++) {
    if (ss[i] == '0')
      add(s, i, v[i]), add(i, s, 0);
    else
      add(i, T, v[i]), add(T, i, 0);
  }
  for (int i = 1, t, w, c, k, p; i <= m; i++) {
    scanf("%d%d%d", &t, &w, &k);
    for (int j = 1; j <= k; j++) {
      scanf("%d", &c);
      if (t == 0)
        add(n + i, c, 2e9), add(c, n + i, 0);
      else
        add(c, n + i, 2e9), add(n + i, c, 0);
    }
    scanf("%d", &p);
    if (p == 1) tot -= g, w += g;
    sum += w;
    if (t == 0)
      add(s, n + i, w), add(n + i, s, 0);
    else
      add(n + i, T, w), add(T, n + i, 0);
  }
  int ans = Dinic();
  printf("%d", tot + (sum - ans));
  return 0;
}
