#include <bits/stdc++.h>
using namespace std;
const long long Maxn = 1e5 + 10;
const long long Inf = 0x7f7f7f7f;
const long long Inf_ll = 1ll * Inf * Inf;
const long long Mod = 1e9 + 7;
const double eps = 1e-7;
long long n, m, b;
struct Hex {
  long long c, b, q, pos, st;
  bool operator<(const Hex& rhs) const { return b < rhs.b; }
} h[220];
long long dp[2050000];
signed main() {
  scanf("%lld %lld %lld", &n, &m, &b);
  for (long long i = 1; i <= n; i++) {
    scanf("%lld %lld %lld", &h[i].c, &h[i].b, &h[i].q);
    h[i].pos = i;
    long long t = 0;
    for (long long j = 1, x; j <= h[i].q; j++) {
      scanf("%lld", &x);
      t |= (1 << (x - 1));
    }
    h[i].st = t;
  }
  sort(h + 1, h + 1 + n);
  long long mm = (1 << m) - 1;
  for (long long i = 0; i <= mm; i++) dp[i] = Inf_ll;
  long long ans = Inf_ll;
  dp[0] = 0;
  for (long long i = 1; i <= n; i++) {
    long long tmp = 1ll * h[i].b * b;
    for (long long j = 0; j <= mm; j++) {
      dp[j | h[i].st] = min(dp[j | h[i].st], dp[j] + h[i].c);
    }
    ans = min(ans, tmp + dp[mm]);
  }
  printf("%lld\n", ans == Inf_ll ? -1 : ans);
  return 0;
}
