#include <bits/stdc++.h>
using namespace std;
long long dp[1 << 21];
long long n, m, b;
long long cost[100];
long long probs[100];
long long monitors[100];
int main() {
  long long k, p;
  std::ios::sync_with_stdio(false);
  cin >> n >> m >> b;
  for (long long i = 0; i < n; i++) {
    cin >> cost[i] >> monitors[i] >> k;
    probs[i] = 0;
    for (long long j = 0; j < k; j++) {
      cin >> p;
      --p;
      probs[i] |= (1 << p);
    }
  }
  for (int i = 0; i < n; i++) {
    for (int j = i + 1; j < n; j++) {
      if (monitors[i] > monitors[j]) {
        swap(monitors[i], monitors[j]);
        swap(probs[i], probs[j]);
        swap(cost[i], cost[j]);
      }
    }
  }
  fill(dp, dp + (1 << m), (1LL << 60));
  dp[0] = 0;
  long long ans = (1LL << 60), state = 0, target = (1 << m) - 1;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < 1 << m; j++)
      if (dp[j] != (1LL << 60)) {
        state = j | probs[i];
        dp[state] = min(dp[state], dp[j] + cost[i]);
      }
    if (dp[target] != (1LL << 60)) ans = min(ans, dp[target] + b * monitors[i]);
  }
  cout << (ans >= (1LL << 60) ? -1 : ans) << endl;
  return 0;
}
