#include <bits/stdc++.h>
using namespace std;
struct node {
  long long x, k, w, t;
} q[102];
bool cmp(node a, node b) { return a.k < b.k; }
bool v[102];
long long dp[1050000], ans = (1LL << 60);
int main() {
  int n, m, b, s;
  cin >> n >> m >> b;
  for (int i = 1; i <= n; i++) {
    scanf("%d%d%d", &q[i].x, &q[i].k, &q[i].w);
    for (int j = 1; j <= q[i].w; j++) {
      scanf("%d", &s);
      v[s] = 1;
      q[i].t += (1 << (s - 1));
    }
  }
  for (int i = 1; i <= m; i++) {
    if (v[i] != 1) {
      cout << "-1" << endl;
      return 0;
    }
  }
  sort(q + 1, q + n + 1, cmp);
  for (int i = 0; i < (1 << m); i++) {
    dp[i] = (1LL << 60);
  }
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int j = 0; j < (1 << m); j++) {
      dp[j | q[i].t] = min(dp[j | q[i].t], dp[j] + q[i].x);
    }
    if (dp[(1 << m) - 1] != (1LL << 60))
      ans = min(ans, dp[(1 << m) - 1] + q[i].k * b);
  }
  cout << ans;
  return 0;
}
