#include <bits/stdc++.h>
using namespace std;
long long dp[1048580];
long long n, m, pri, tot, ans;
struct node {
  long long st, val, num;
} f[105];
bool cmp(node x, node y) { return x.num < y.num; }
int main() {
  scanf("%lld%lld%lld", &n, &m, &pri);
  for (long long i = 1; i <= n; i++) {
    long long x, y;
    scanf("%lld%lld%lld", &f[i].val, &f[i].num, &x);
    while (x--) scanf("%lld", &y), f[i].st |= (1 << (y - 1));
  }
  ans = 4e18;
  sort(f + 1, f + n + 1, cmp);
  for (long long j = 1; j <= (1 << m) - 1; j++) dp[j] = 4e18;
  for (long long i = 1; i <= n; i++) {
    tot = f[i].num * pri;
    for (long long j = 0; j <= (1 << m) - 1; j++)
      dp[j | f[i].st] = min(dp[j | f[i].st], f[i].val + dp[j]);
    ans = min(ans, dp[(1 << m) - 1] + tot);
  }
  if (ans >= 4e18)
    printf("-1");
  else
    printf("%lld", ans);
}
