#include <bits/stdc++.h>
using namespace std;
const long long inf = 2e18 + 100;
int n, m, b;
const int N = 100 + 5;
vector<int> problems[N];
long long dp[(1 << 20) + 5];
vector<pair<pair<int, int>, int>> vec;
int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(0);
  cout.tie(0);
  cin >> n >> m >> b;
  for (int i = 0; i < n; i++) {
    int xi, ki, mi;
    cin >> xi >> ki >> mi;
    vec.push_back({{ki, xi}, i});
    for (int j = 0; j < mi; j++) {
      int in;
      cin >> in;
      problems[i].push_back(--in);
    }
  }
  for (int i = 1; i < (1 << m); i++) {
    dp[i] = inf;
  }
  long long res = inf;
  sort(vec.begin(), vec.end());
  for (int i = 0; i < n; i++) {
    int problemsMsk = 0;
    for (int j = 0; j < problems[vec[i].second].size(); j++) {
      problemsMsk |= (1 << problems[vec[i].second][j]);
    }
    for (int j = 0; j < (1 << m); j++) {
      int newMsk = j | problemsMsk;
      long long cost = dp[j] + vec[i].first.second;
      if (cost < dp[newMsk]) {
        dp[newMsk] = cost;
      }
    }
    if (dp[(1 << m) - 1] != inf)
      res = min(
          res, dp[(1 << m) - 1] + (long long)vec[i].first.first * (long long)b);
  }
  if (res == inf)
    cout << -1;
  else
    cout << res;
  return 0;
}
