#include <bits/stdc++.h>
using namespace std;
struct Coder {
  int msk, k, c;
};
bool operator<(Coder a, Coder b) { return a.k < b.k; }
const int maxn = 100;
const int maxm = 20;
const long long inf = 2e18;
Coder h[maxn];
long long dp[(1 << maxm)][2];
int main() {
  ios::sync_with_stdio(0);
  cin.tie(0);
  int m, n, c;
  cin >> n >> m >> c;
  for (int i = 0; i < n; ++i) {
    int t;
    cin >> h[i].c >> h[i].k >> t;
    for (int j = 0; j < t; ++j) {
      int x;
      cin >> x;
      x--;
      h[i].msk += (1 << x);
    }
  }
  sort(h, h + n);
  for (int mask = 1; mask < (1 << m); ++mask) {
    dp[mask][0] = dp[mask][1] = inf;
  }
  dp[0][0] = dp[0][1] = 0ll;
  for (int i = 0; i < n; ++i) {
    for (int mask = 0; mask < (1 << m); ++mask) {
      int nmask = (mask ^ (mask & h[i].msk));
      dp[mask][1] =
          min(dp[mask][1], dp[nmask][0] + h[i].c + (long long)h[i].k * c);
      dp[mask][0] = min(dp[mask][0], dp[nmask][0] + h[i].c);
    }
  }
  if (dp[(1 << m) - 1][1] == inf) {
    cout << "-1\n";
  } else {
    cout << dp[(1 << m) - 1][1] << '\n';
  }
  return 0;
}
