#include <bits/stdc++.h>
using namespace std;
const unsigned long long maxn = 20, Maxn = 100 + 10;
const unsigned long long inf = 1e19 + 10;
unsigned long long dp[2][(1 << maxn)];
unsigned long long x[Maxn], k[Maxn], mm[Maxn], mas[Maxn];
pair<unsigned long long, unsigned long long> a[Maxn];
int32_t main() {
  ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
  unsigned long long n, m, b;
  cin >> n >> m >> b;
  for (unsigned long long i = 0; i < n; i++) {
    cin >> x[i] >> k[i] >> mm[i];
    for (unsigned long long j = 0; j < mm[i]; j++) {
      unsigned long long y;
      cin >> y;
      y--;
      mas[i] += (1 << y);
    }
    a[i] = make_pair(k[i], i);
  }
  unsigned long long ans = inf;
  sort(a, a + n);
  unsigned long long msk = (1 << m) - 1;
  for (unsigned long long mask = 1; mask < (1 << m); mask++)
    dp[1][mask] = dp[0][mask] = inf;
  for (unsigned long long mask = 1; mask < (1 << m); mask++) {
    if ((mask & mas[a[0].second]) == mask) {
      dp[0][mask] = x[a[0].second];
      if (mask == msk) ans = dp[0][mask] + a[0].first * b;
    }
  }
  unsigned long long j = 1;
  for (unsigned long long i = 1; i < n; i++) {
    for (unsigned long long mask = 1; mask < (1 << m); mask++)
      dp[j][mask] =
          min(dp[1 - j][mask],
              dp[1 - j][mask ^ (mask & mas[a[i].second])] + x[a[i].second]);
    ans = min(ans, dp[j][msk] + a[i].first * b);
    j = 1 - j;
  }
  if (ans == inf)
    cout << -1 << "\n";
  else
    cout << ans << "\n";
  return 0;
}
