#include <bits/stdc++.h>
#pragma comment(linker, "/stack:200000000"]
#pragma GCC optimize("Ofast"]
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native"]
using namespace std;
unsigned long long int n, m, b;
struct people {
  unsigned long long int x, k, mask;
  people(unsigned long long int x = 0, unsigned long long int k = 0,
         unsigned long long int mask = 0) {
    this->x = x;
    this->k = k;
    this->mask = mask;
  }
};
bool cmp(const people& a, const people& b) { return a.k < b.k; }
signed main() {
  cin >> n >> m >> b;
  vector<people> a(n);
  for (unsigned long long int i = 0; i < n; i++) {
    unsigned long long int x, k, m;
    cin >> x >> k >> m;
    unsigned long long int mask = 0;
    for (unsigned long long int j = 0; j < m; j++) {
      unsigned long long int num;
      cin >> num;
      num--;
      mask ^= (1 << num);
    }
    a[i] = people(x, k, mask);
  }
  sort(a.begin(), a.end(), cmp);
  vector<unsigned long long int> dp((1 << m), 1e19);
  dp[0] = 0;
  unsigned long long int ans = 1e19;
  for (unsigned long long int i = 0; i < n; i++) {
    for (unsigned long long int mask = 0; mask < (1 << m); mask++) {
      unsigned long long int nmask = mask | a[i].mask;
      dp[nmask] = min(dp[nmask], dp[mask] + a[i].x);
      ans = min(ans, dp[(1 << m) - 1] + a[i].k * b);
    }
  }
  if (ans > 7e18)
    cout << -1 << "\n";
  else
    cout << ans << "\n";
  return 0;
}
