#include <bits/stdc++.h>
using namespace std;
inline pair<int, pair<int, int> > make(int m, int x, int mask) {
  return make_pair(m, make_pair(x, mask));
}
vector<long long> a;
const long long inf = 5000000000000000000LL;
long long solve(vector<pair<int, pair<int, int> > >& fi, int prob,
                long long b) {
  sort(fi.begin(), fi.end());
  int target = 1 << prob;
  fill(a.begin(), a.begin() + target, inf);
  a[0] = 0;
  long long res = inf;
  for (int i = 0; i < fi.size(); ++i) {
    int x = fi[i].second.first;
    int mask = fi[i].second.second;
    for (int j = 0, k; j < target; ++j) {
      k = j | mask;
      a[k] = min(a[k], a[j] + x);
    }
    if (a[target - 1] < inf) res = min(a[target - 1] + b * fi[i].first, res);
  }
  return res < inf ? res : -1;
}
int main() {
  int n, prob, b, M = 0;
  a.resize(1 << 20);
  cin >> n >> prob >> b;
  vector<pair<int, pair<int, int> > > fi;
  for (int i = 0, x, m, k; i < n; ++i) {
    int mask = 0;
    cin >> x >> m >> k;
    for (int j = 0, t; j < k; ++j) {
      cin >> t;
      mask |= (1 << (t - 1));
    }
    fi.push_back(make(m, x, mask));
    M = max(M, m);
  }
  cout << solve(fi, prob, b);
  return 0;
}
