#include <bits/stdc++.h>
using namespace std;
const long long INF = (long long)4e18 + 7;
inline void minimize(long long &x, const long long &y) {
  if (x > y) x = y;
}
struct help {
  int x, s, r;
  help() { x = s = r = 0; }
  void input(void) {
    x = s = r = 0;
    int k;
    scanf("%d%d%d", &x, &r, &k);
    for (int zz = 0; zz < (k); zz = zz + 1) {
      int v;
      scanf("%d", &v);
      v--;
      s |= (1 << (v));
    }
  }
  bool operator<(const help &a) const { return (r < a.r); }
};
long long f[(1 << (20)) + 7];
help a[111];
int n, m, b;
void init(void) {
  scanf("%d%d%d", &n, &m, &b);
  for (int i = (1); i <= (n); i = i + 1) a[i].input();
  sort(a + 1, a + n + 1);
}
void process(void) {
  for (int i = 0; i < ((1 << (m))); i = i + 1) f[i] = INF;
  f[0] = 0;
  long long res = INF;
  for (int i = (1); i <= (n); i = i + 1) {
    long long cost = 1LL * b * a[i].r;
    for (int j = 0; j < ((1 << (m))); j = j + 1)
      if (f[j] < INF) minimize(f[j | a[i].s], f[j] + a[i].x);
    minimize(res, f[(1 << (m)) - 1] + cost);
  }
  if (res < INF)
    cout << res;
  else
    cout << -1;
}
int main(void) {
  init();
  process();
  return 0;
}
