#include <bits/stdc++.h>
using namespace std;
const long long INF = LLONG_MAX;
vector<pair<long long, pair<long long, int> > > fr;
long long memo[(1 << 20)];
int main() {
  for (int i = 0; i < (1 << 20); ++i) memo[i] = INF;
  long long n, m, b;
  scanf(" %lld %lld %lld", &n, &m, &b);
  for (int i = 0; i < n; ++i) {
    long long x, k;
    int mm, mask = 0;
    scanf("%lld %lld %d", &x, &k, &mm);
    for (int j = 0; j < mm; ++j) {
      int pi;
      scanf("%d", &pi);
      mask |= (1 << (pi - 1));
    }
    fr.push_back(pair<long long, pair<long long, int> >(
        k, pair<long long, int>(x, mask)));
  }
  sort(fr.begin(), fr.end());
  long long ans = INF;
  memo[0] = 0;
  for (int i = 0; i < n; ++i) {
    int atual = fr[i].second.second;
    memo[atual] = min(memo[atual], fr[i].second.first);
    for (int j = 0; j < (1 << m); ++j) {
      if (memo[j] != INF) {
        int jj = j | atual;
        memo[jj] = min(memo[jj], memo[j] + fr[i].second.first);
      }
    }
    if (memo[(1 << m) - 1] != INF) {
      ans = min(ans, memo[(1 << m) - 1] + b * fr[i].first);
    }
  }
  if (ans == INF)
    printf("-1\n");
  else
    printf("%lld\n", ans);
  return 0;
}
