#include <bits/stdc++.h>
using namespace std;
const long long inf = 1LL << 60;
int N, M;
long long B, dp[2][1 << 20];
struct Tperson {
  long long b, k;
  int m;
} p[101];
bool cmpk(Tperson a, Tperson b) { return a.k > b.k; }
inline void renew(long long &x, long long y) {
  if (x > y) x = y;
}
int main() {
  scanf("%d%d%I64d", &N, &M, &B);
  for (int i = 1, m, a; i <= N; ++i) {
    scanf("%I64d%I64d%d", &p[i].b, &p[i].k, &m);
    while (m--) scanf("%d", &a), p[i].m += (1 << (a - 1));
  }
  sort(p + 1, p + N + 1, cmpk);
  for (int j = 1; j < (1 << M); ++j) dp[0][j] = inf;
  for (int i = 1; i <= N; ++i) {
    for (int j = 1; j < (1 << M); ++j) dp[i & 1][j] = inf;
    for (int j = 0; j < (1 << M); ++j) {
      renew(dp[i & 1][j], dp[i & 1 ^ 1][j]);
      renew(dp[i & 1][j | p[i].m],
            dp[i & 1 ^ 1][j] + p[i].b + ((j == 0) ? p[i].k * B : 0));
    }
  }
  long long ans = dp[N & 1][(1 << M) - 1];
  printf("%I64d\n", ans == inf ? -1 : ans);
  return 0;
}
