#include <bits/stdc++.h>
using namespace std;
const long long INF = 1LL << 61;
vector<pair<long long, long long> > dp(1050000);
vector<pair<long long, pair<long long, long long> > > fri;
int main(void) {
  long long n, m, b;
  cin >> n >> m >> b;
  for (int i = 0; i < 1050000; i++) dp[i].first = INF;
  dp[0].first = 0;
  dp[0].second = 0;
  for (long long nn = 0; nn < n; nn++) {
    long long x, k, nm;
    cin >> x >> k >> nm;
    long long nsolve = 0;
    for (long long mm = 0; mm < nm; mm++) {
      long long solve;
      cin >> solve;
      nsolve |= (1 << (solve - 1));
    }
    fri.push_back(pair<long long, pair<long long, long long> >(
        k, pair<long long, long long>(nsolve, x)));
  }
  sort(fri.begin(), fri.end());
  long long ans = INF;
  for (int nn = 0; nn < n; nn++) {
    long long x, k, nm, nsolve;
    x = fri[nn].second.second;
    k = fri[nn].first;
    nsolve = fri[nn].second.first;
    for (long long i = 0; i < 1050000; i++) {
      if (dp[i].first == INF) continue;
      long long ins = i | nsolve;
      long long ncost = dp[i].first + x;
      if (dp[ins].first >= ncost) {
        dp[ins].first = ncost;
        dp[ins].second = max(dp[ins].second, k);
      }
    }
    if (dp[(1 << m) - 1].first != INF)
      ans = min(ans, dp[(1 << m) - 1].first + dp[(1 << m) - 1].second * b);
  }
  if (ans == INF)
    cout << "-1" << endl;
  else
    cout << ans << endl;
  return 0;
}
