#include <bits/stdc++.h>
const int maxn = 1 << 20;
const long long inf = 4e18;
long long dp[maxn + 5];
int n, m;
long long ans = inf, b;
using namespace std;
struct fuck {
  int x, s;
  long long k;
} f[105];
bool cmp(const fuck& x, const fuck& y) { return x.k < y.k; }
int main() {
  int t, x;
  scanf("%d %d %I64d", &n, &m, &b);
  for (int i = 0; i < n; i++) {
    scanf("%d %I64d", &f[i].x, &f[i].k);
    scanf("%d", &t);
    while (t--) {
      scanf("%d", &x);
      f[i].s |= (1 << x - 1);
    }
  }
  sort(f, f + n, cmp);
  memset(dp, -1, sizeof(dp));
  dp[0] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < (1 << m); j++) {
      if (dp[j] == -1) continue;
      t = j | f[i].s;
      if (dp[t] != -1)
        dp[t] = min(dp[t], dp[j] + f[i].x);
      else
        dp[t] = dp[j] + f[i].x;
    }
    if (dp[(1 << m) - 1] != -1) ans = min(ans, dp[(1 << m) - 1] + f[i].k * b);
  }
  if (ans == inf)
    printf("-1");
  else
    printf("%I64d", ans);
  return 0;
}
