#include <bits/stdc++.h>
using namespace std;
const int N = 2 * 1e6 + 69;
struct data {
  int cost, monitor, status;
  data() { cost = monitor = status = 0; }
  bool operator<(const data &oth) const { return monitor < oth.monitor; }
} a[105];
long long f[N], g[N], oo = 1e15, n, m, b;
int main() {
  cin >> n >> m >> b;
  for (int i = 1; i <= n; i++) {
    int k, v;
    cin >> a[i].cost >> a[i].monitor >> k;
    for (int j = 1; j <= k; j++) {
      cin >> v;
      a[i].status += 1 << (v - 1);
    }
  }
  sort(a + 1, a + n + 1);
  for (int i = 1; i < (1 << m); i++) f[i] = g[i] = oo;
  long long res = LONG_LONG_MAX, check = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < (1 << m); j++)
      g[j | a[i].status] = min(g[j | a[i].status], f[j] + a[i].cost);
    for (int j = 1; j < (1 << m); j++) f[j] = g[j];
    if (f[(1 << m) - 1] != oo) {
      check = 1;
      res = min(res, f[(1 << m) - 1] + a[i].monitor * b);
    }
  }
  if (!check)
    cout << -1;
  else
    cout << res;
}
