#include <bits/stdc++.h>
using namespace std;
const long long inf = 0x3f3f3f3f3f3f3f3f;
const int maxn = 121;
long long n, m, b, dp[1 << 20];
struct People {
  long long x, k, m;
} e[maxn];
bool cmp(People a, People b) {
  if (a.k != b.k)
    return a.k < b.k;
  else
    return a.x < b.x;
}
int main() {
  cin >> n >> m >> b;
  for (int i = 1; i <= n; i++) {
    int j;
    cin >> e[i].x >> e[i].k >> j;
    while (j--) {
      int a;
      cin >> a;
      e[i].m |= (1 << (a - 1));
    }
  }
  sort(e + 1, e + 1 + n, cmp);
  long long ans = inf;
  memset(dp, 0x3f, sizeof dp);
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < (1 << m) - 1; j++) {
      dp[j | e[i].m] = min(dp[j | e[i].m], dp[j] + e[i].x);
    }
    if (dp[(1 << m) - 1] != inf) {
      ans = min(ans, dp[(1 << m) - 1] + 1LL * b * e[i].k);
    }
  }
  if (ans == inf) ans = -1;
  cout << ans << endl;
  return 0;
}
