#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-7;
const long long INF = LLONG_MAX;
long long dp[(1 << 21)];
int N;
int main() {
  int n, m;
  long long b;
  scanf(
      "%d %d "
      "%lld",
      &n, &m, &b);
  N = 1 << m;
  vector<pair<int, pair<int, int>>> vec;
  for (int i = 0; i < n; ++i) {
    int x, k, mm;
    scanf("%d %d %d", &x, &k, &mm);
    int mask = 0;
    while (mm--) {
      int val;
      scanf("%d", &val);
      mask |= 1 << (val - 1);
    }
    vec.push_back(make_pair(k, make_pair(x, mask)));
  }
  sort((vec).begin(), (vec).end());
  for (int i = 0; i < N; ++i) dp[i] = INF;
  dp[0] = 0;
  long long ans = INF;
  for (pair<int, pair<int, int>> x : vec) {
    int cost = x.second.first;
    int mask = x.second.second;
    for (int i = N - 1; i >= 0; --i)
      if (dp[i] != INF) dp[i | mask] = min(dp[i | mask], dp[i] + cost);
    if (dp[N - 1] != INF) ans = min(ans, dp[N - 1] + x.first * b);
  }
  if (ans == INF) ans = -1;
  printf("%lld", ans);
}
