#include <bits/stdc++.h>
using namespace std;
struct frnd {
  long long x, k, mask;
};
const int N = 100;
const int M = 20;
const long long INF = 2e18;
long long dp[1 << M];
long long n, m, b;
frnd f[N];
bool comp(frnd a, frnd b) { return a.k > b.k; }
int main() {
  cin >> n >> m >> b;
  for (int i = 0; i < n; i++) {
    int t;
    cin >> f[i].x >> f[i].k >> t;
    for (int j = 0; j < t; j++) {
      int z;
      cin >> z;
      f[i].mask |= (1 << (z - 1));
    }
  }
  sort(f, f + n, comp);
  for (int i = 1; i < (1 << M); i++) {
    dp[i] = INF;
  }
  for (int i = 0; i < n; i++) {
    for (int j = (1 << M) - 1; j >= 0; j--) {
      if (dp[j] == INF) continue;
      long long cost = 0;
      if (j == 0) {
        cost = f[i].k * b;
      }
      dp[j | f[i].mask] = min(dp[j | f[i].mask], dp[j] + f[i].x + cost);
    }
  }
  if (dp[(1 << m) - 1] == INF) {
    cout << -1;
  } else {
    cout << dp[(1 << m) - 1];
  }
}
