#include <bits/stdc++.h>
using namespace std;
const int N = 105;
const int M = 20;
const long long inf = 8e18;
struct frie {
  long long money;
  int monitors;
  int can_solve;
};
frie friends[N];
long long dp[1 << M];
int n, m;
long long b;
template <typename T>
void umin(T &a, T b) {
  a = min(a, b);
}
int main() {
  ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0), cout.precision(15);
  cin >> n >> m >> b;
  for (int i = (0); i <= ((n)-1); i += (+1)) {
    int k, id;
    cin >> friends[i].money >> friends[i].monitors >> k;
    while (k--) {
      cin >> id;
      id--;
      friends[i].can_solve |= (1 << id);
    }
  }
  sort(friends, friends + n,
       [&](frie a, frie b) { return a.monitors < b.monitors; });
  long long ans = inf;
  for (int solved = (0); solved <= (((1 << m)) - 1); solved += (+1)) {
    dp[solved] = inf;
  }
  dp[0] = 0LL;
  for (int i = (0); i <= ((n)-1); i += (+1)) {
    for (int solved = ((1 << m) - 1); solved >= (0); solved += (-1))
      if (dp[solved] != inf) {
        umin(dp[solved | friends[i].can_solve], dp[solved] + friends[i].money);
      }
    umin(ans, dp[(1 << m) - 1] + friends[i].monitors * b);
  }
  if (ans == inf) {
    ans = -1;
  }
  cout << ans << '\n';
  return 0;
}
