#include <bits/stdc++.h>
using namespace std;
long long INF = (1LL << 62);
struct ff {
  long long price, mask, monitors;
};
bool cmp(const ff &A, const ff &B) { return A.monitors < B.monitors; }
ff f[150];
long long memo[1 << 21];
int main() {
  long long n, m, b;
  cin >> n >> m >> b;
  for (int i = 0; i < n; ++i) {
    int k;
    cin >> f[i].price >> f[i].monitors >> k;
    for (int j = 0; j < k; ++j) {
      int id;
      cin >> id;
      --id;
      f[i].mask |= (1 << id);
    }
  }
  sort(f, f + n, cmp);
  for (int i = 0; i < (1 << m); ++i) memo[i] = INF;
  memo[0] = 0;
  long long mi = INF;
  for (int i = 0; i < n; ++i) {
    for (int mask = 0; mask < (1 << m); ++mask)
      memo[mask | f[i].mask] =
          min(memo[mask | f[i].mask], memo[mask] + f[i].price);
    long long res = memo[(1 << m) - 1];
    if (res != INF) mi = min(mi, res + f[i].monitors * b);
  }
  if (mi == INF) mi = -1;
  cout << mi << endl;
  return 0;
}
