#include <bits/stdc++.h>
#pragma GCC optimize("Ofast")
#pragma GCC optimize("unroll-loops")
#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
using namespace std;
const int MOD = 1e9 + 7;
const int MOD2 = 1e9 + 9;
const int PR = 727;
const int INF = INT_MAX;
const long long LINF = LLONG_MAX;
struct node {
  int x;
  int k;
  int m;
};
const int N = 1e2 + 20;
const int M = 21;
long long dp[1 << M], n, m, b, ans = LINF;
node a[N];
bool cmp(node x, node y) { return x.k < y.k; }
int main() {
  ios::sync_with_stdio(false), cin.tie(0), cout.tie(0);
  cin >> n >> m >> b;
  for (int i = 0, mi; i < n; i++) {
    cin >> a[i].x >> a[i].k >> mi;
    for (int j = 0, x; j < mi; j++) {
      cin >> x;
      a[i].m += (1 << (x - 1));
    }
  }
  sort(a, a + n, cmp);
  memset(dp, 63, sizeof dp);
  dp[0] = 0;
  for (int i = 0; i < n; i++) {
    for (int mask = 1; mask < (1 << m); mask++)
      if (mask & a[i].m)
        dp[mask] = min(dp[mask], dp[mask ^ (mask & a[i].m)] + a[i].x);
    ans = min(ans, (dp[(1 << m) - 1] == dp[(1 << M) - 1]
                        ? LINF
                        : dp[(1 << m) - 1] + a[i].k * b));
  }
  cout << (ans == LINF ? -1 : ans) << endl;
}
