#include <bits/stdc++.h>
using namespace std;
int N, M, B;
long long Ans, F[2000005];
struct Nod {
  int x, k, s;
} A[105];
bool Cmp(Nod a, Nod b) { return a.k < b.k; }
int main() {
  scanf("%d%d%d", &N, &M, &B);
  for (int i = 1, t; i <= N; i++) {
    scanf("%d%d%d", &A[i].x, &A[i].k, &t);
    for (int x; t--;) scanf("%d", &x), A[i].s |= 1 << x - 1;
  }
  sort(A + 1, A + N + 1, Cmp);
  int U = 1 << M;
  Ans = (1ll << 60);
  for (int i = 1; i < U; i++) F[i] = (1ll << 60);
  for (int i = 1; i <= N; i++) {
    for (int j = 0; j < U; j++)
      if (F[j] != (1ll << 60))
        F[j | A[i].s] = min(F[j | A[i].s], F[j] + A[i].x);
    if (F[U - 1] != (1ll << 60)) Ans = min(Ans, F[U - 1] + 1ll * A[i].k * B);
  }
  printf("%I64d\n", Ans == (1ll << 60) ? -1 : Ans);
}
