#include <bits/stdc++.h>
using namespace std;
const long long inf = 4e18;
struct ab {
  long long v, c, m, a;
} t[505];
long long dp[5000005];
long long cmp(ab x, ab y) { return x.c < y.c; }
signed main() {
  long long n, m, v, ans = inf;
  scanf("%lld%lld%lld", &n, &m, &v);
  for (long long i = 1; i <= n; i++) {
    scanf("%lld%lld%lld", &t[i].v, &t[i].c, &t[i].m);
    for (long long j = 1; j <= t[i].m; j++) {
      long long x;
      scanf("%lld", &x);
      t[i].a += 1 << (x - 1);
    }
  }
  sort(t + 1, t + 1 + n, cmp);
  for (long long i = 1; i < 1 << m; i++) {
    dp[i] = inf;
  }
  for (long long i = 1; i <= n; i++) {
    for (long long j = 0; j < 1 << m; j++) {
      dp[j | t[i].a] = min(dp[j | t[i].a], dp[j] + t[i].v);
    }
    ans = min(ans, dp[(1 << m) - 1] + v * t[i].c);
  }
  printf("%lld\n", ans == inf ? -1 : ans);
  return 0;
}
