#include <bits/stdc++.h>
using namespace std;
struct Friend {
  int x, k, mset;
} f[102];
int cmp(Friend a, Friend b) { return a.k < b.k; }
int n, m, b, num;
void input() {
  scanf("%d %d %d", &n, &m, &b);
  for (int i = 0; i < n; i++) {
    scanf("%d %d %d", &f[i].x, &f[i].k, &num);
    int set = 0, t;
    while (num--) {
      scanf("%d", &t);
      set |= (1 << (t - 1));
    }
    f[i].mset = set;
  }
  sort(f, f + n, cmp);
}
const int STATUS = 1 << 20;
const long long INF = 0x3f3f3f3f3f3f3f3f;
long long dp[STATUS];
void solve() {
  int S = 1 << m;
  for (int i = 0; i < S; i++) dp[i] = INF;
  dp[0] = 0;
  long long ans = INF;
  for (int i = 0; i < n; i++) {
    for (int s = S - 1; s >= 0; s--) {
      int ns = s | f[i].mset;
      dp[ns] = min(dp[ns], dp[s] + f[i].x);
    }
    long long val = dp[S - 1] + (long long)f[i].k * b;
    ans = min(ans, val);
  }
  cout << ans << endl;
}
int main() {
  input();
  int allSet = 0;
  for (int i = 0; i < n; i++) allSet |= f[i].mset;
  if (allSet + 1 != (1 << m))
    printf("-1\n");
  else
    solve();
  return 0;
}
