#include <bits/stdc++.h>
using namespace std;
const long long inf = (1LL << 60);
long long dp[1 << 22];
struct node {
  int x, k, p;
} f[110];
int cmp(node x, node y) { return x.k < y.k; }
long long ans;
int main() {
  int n, m, b;
  scanf("%d%d%d", &n, &m, &b);
  int l = 1 << m;
  for (int i = 1; i <= l; i++) {
    dp[i] = inf;
  }
  int cnt;
  for (int i = 1; i <= n; i++) {
    f[i].p = 0;
    int x;
    scanf("%d%d%d", &f[i].x, &f[i].k, &cnt);
    for (int j = 0; j < cnt; j++) {
      scanf("%d", &x);
      f[i].p |= (1 << (x - 1));
    }
  }
  ans = inf;
  sort(f + 1, f + n + 1, cmp);
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < l; ++j) {
      dp[j | f[i].p] = min(dp[j] + f[i].x, dp[j | f[i].p]);
    }
    ans = min(ans, dp[l - 1] + (long long)f[i].k * b);
  }
  if (ans >= inf) {
    printf("-1\n");
  } else {
    printf("%lld", ans);
  }
  return 0;
}
