#include <bits/stdc++.h>
using namespace std;
struct _ {
  ios_base::Init i;
  _() { ios_base::sync_with_stdio(false), cin.tie(NULL), cout.tie(NULL); }
} _;
int main() {
  long long n, m, b;
  cin >> n >> m >> b;
  vector<vector<long long>> v;
  for (long long i = 0; i <= n - 1; i++) {
    long long x, k, mi;
    cin >> x >> k >> mi;
    long long curr_mask = 0;
    for (long long j = 1; j <= mi; j++) {
      long long mj;
      cin >> mj;
      curr_mask |= (1ll << (mj - 1ll));
    }
    v.push_back({k, x, curr_mask});
  }
  sort(v.begin(), v.end());
  long long ans = LLONG_MAX;
  vector<long long> dp(1 << m, LLONG_MAX);
  dp[0] = 0;
  for (auto curr : v) {
    for (long long mask = (1 << m) - 1; mask >= 0; mask--) {
      if (dp[mask] == LLONG_MAX) continue;
      dp[mask | curr[2]] = min(dp[mask | curr[2]], dp[mask] + curr[1]);
    }
    if (dp[(1 << m) - 1] != LLONG_MAX)
      ans = min(ans, dp[(1 << m) - 1] + b * curr[0]);
  }
  cout << ((ans == LLONG_MAX) ? -1 : ans);
  return 0;
}
