#include <bits/stdc++.h>
using namespace std;
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fLL;
const double eps = 1E-6;
const int LEN = 21;
long long dp[1 << 21];
struct F {
  int cost, mon, st;
} f[101];
bool cmp(F a, F b) { return a.mon < b.mon; }
int main() {
  int n, m, b, tn, tc, tm, tmp;
  while (scanf("%d%d%d", &n, &m, &b) != EOF) {
    for (int i = 0; i < n; i++) {
      scanf("%d%d%d", &f[i].cost, &f[i].mon, &tn);
      f[i].st = 0;
      for (int j = 0; j < tn; j++) {
        scanf("%d", &tmp);
        f[i].st |= (1 << (tmp - 1));
      }
    }
    sort(f, f + n, cmp);
    for (int i = 0; i < (1 << 21); i++) dp[i] = LINF;
    dp[0] = 0;
    long long ans = LINF;
    for (int i = 0; i < n; i++) {
      for (int j = (1 << m) - 1; j >= 0; j--) {
        dp[j | f[i].st] = min(dp[j | f[i].st], dp[j] + f[i].cost);
      }
      ans = min(dp[(1 << m) - 1] + (long long)f[i].mon * (long long)b, ans);
    }
    if (ans == LINF)
      printf("-1\n");
    else
      printf("%I64d\n", ans);
  }
  return 0;
}
