#include <bits/stdc++.h>
using namespace std;
unsigned long long n, m, b;
struct people {
  unsigned long long money;
  unsigned long long need;
  unsigned long long solve;
} W[110];
unsigned long long dp[(1ll << 20) + 10];
unsigned long long ans = 1e19;
bool cmp(people x, people y) { return x.need < y.need; }
int main() {
  scanf("%llu%llu%llu", &n, &m, &b);
  for (register int i = 1; i <= n; i++) {
    unsigned long long t;
    scanf("%llu%llu%llu", &W[i].money, &W[i].need, &t);
    W[i].solve = 0;
    for (register int j = 1; j <= t; j++) {
      unsigned long long id;
      scanf("%llu", &id);
      W[i].solve |= (1ll << (id - 1));
    }
  }
  sort(W + 1, W + n + 1, cmp);
  for (register int i = 0; i < 1ll << m; i++) {
    dp[i] = 1e19;
  }
  dp[0] = 0;
  for (register int i = 1; i <= n; i++) {
    for (register int j = 0; j < 1ll << m; j++) {
      dp[j | W[i].solve] = min(dp[j | W[i].solve], dp[j] + W[i].money);
    }
    ans = min(ans, dp[(1ll << m) - 1] + b * W[i].need);
  }
  if (ans >= 1e19) {
    printf("-1");
  } else {
    printf("%llu", ans);
  }
  return 0;
}
