#include <bits/stdc++.h>
using namespace std;
int n, m, B, x[110], K[110], p[110], y, z, ord[110], A;
long long f[2][1048580], inf = 3000000000000000000LL, ans;
void read(int &x) {
  char ch = getchar();
  int mark = 1;
  for (; ch != '-' && (ch < '0' || ch > '9'); ch = getchar())
    ;
  if (ch == '-') mark = -1, ch = getchar();
  for (x = 0; ch >= '0' && ch <= '9'; ch = getchar()) x = x * 10 + ch - 48;
  x *= mark;
}
inline bool cmp(int a, int b) { return K[a] < K[b]; }
int main() {
  read(n);
  read(m);
  read(B);
  for (int i = 1; i <= n; i++) {
    read(x[i]);
    read(K[i]);
    read(z);
    p[i] = 0;
    for (int j = 1; j <= z; j++) read(y), p[i] |= (1 << (y - 1));
    ord[i] = i;
  }
  sort(ord + 1, ord + n + 1, cmp);
  ans = inf;
  A = 0;
  for (int j = 0; j < (1 << m); j++) f[0][j] = inf;
  f[0][0] = 0;
  for (int i = 1; i <= n; i++) {
    A ^= 1;
    int now = ord[i];
    for (int j = 0; j < (1 << m); j++) f[A][j] = f[A ^ 1][j];
    for (int j = 0; j < (1 << m); j++)
      if (f[A ^ 1][j] != inf) {
        int k = j | p[now];
        f[A][k] = min(f[A][k], f[A ^ 1][j] + x[now]);
        if (k == ((1 << m) - 1))
          ans = min(ans, f[A][k] + (long long)B * K[now]);
      }
  }
  if (ans == inf)
    printf("-1\n");
  else
    printf("%I64d\n", ans);
  return 0;
}
