#include <bits/stdc++.h>
using namespace std;
using DO = double;
using LL = long long;
using VI = vector<int>;
const int N = 1 << 20;
const LL INF = 0x3f3f3f3f3f3f3f3fll;
inline void smin(LL& a, const LL& b) {
  if (a > b) a = b;
}
LL dp[N];
int bt[111];
int val[111];
int k[111];
int id[111];
int main() {
  int n, m, b;
  scanf("%d %d %d", &n, &m, &b);
  int N = 1 << m;
  for (int i = 1, f; i <= n; i++) {
    scanf("%d %d %d", val + i, k + i, &f);
    for (int j = 0, r; j < f; j++) {
      scanf("%d", &r);
      r--;
      bt[i] |= (1 << r);
    }
    id[i] = i;
  }
  sort(id + 1, id + n + 1, [&](int i, int j) { return k[i] < k[j]; });
  for (int i = 1; i < N; i++) {
    dp[i] = INF;
  }
  LL crr = 0, ans = INF;
  for (int i = 1; i <= n; i++) {
    crr += (LL)(k[id[i]] - k[id[i - 1]]) * b;
    int bit = bt[id[i]];
    int v = val[id[i]];
    for (int k = N - 1; k >= 0; k--) {
      smin(dp[k | bit], dp[k] + v);
    }
    if (dp[N - 1] != INF) {
      smin(ans, dp[N - 1] + crr);
    }
  }
  if (ans == INF) {
    ans = -1;
  }
  cout << ans << endl;
  return 0;
}
