#include <bits/stdc++.h>
using namespace std;
long long int dp[1050000], nd[1050000] = {0}, b;
struct P {
  long long int x, k, m, val;
} s[105];
int cmp(P a, P b) { return a.k < b.k; }
int main() {
  int n, m, k, i, j, x, y;
  scanf("%d%d%lld", &n, &m, &b);
  memset(dp, -1, sizeof(dp));
  for (i = 0; i < n; i++) {
    scanf("%lld%lld%lld", &s[i].x, &s[i].k, &s[i].m);
    s[i].val = 0;
    for (j = 0; j < s[i].m; j++) {
      scanf("%d", &x);
      s[i].val |= (1 << x - 1);
    }
  }
  int maxn = 1 << m;
  long long int ans = -1;
  sort(s, s + n, cmp);
  dp[0] = 0;
  for (i = 0; i < n; i++) {
    for (j = 0; j < maxn; j++) {
      if (dp[j] == -1) continue;
      int tmp = j | s[i].val;
      if (dp[tmp] == -1 || dp[j] + s[i].x < dp[tmp]) dp[tmp] = dp[j] + s[i].x;
    }
    if (dp[maxn - 1] != -1 && (ans == -1 || dp[maxn - 1] + b * s[i].k < ans))
      ans = dp[maxn - 1] + b * s[i].k;
  }
  printf("%lld\n", ans);
}
