#include <bits/stdc++.h>
using namespace std;
const int N = (1 << 20) + 5;
const int M = 105;
const long long INF = 0x3f3f3f3f3f3f3f3f;
struct state {
  int s;
  long long k, val;
} p[M];
int n, m;
long long b, dp[N];
bool cmp(const state& a, const state& b) { return a.k < b.k; }
void init() {
  memset(dp, -1, sizeof(dp));
  scanf("%d%d", &n, &m);
  cin >> b;
  int a, t;
  for (int i = 0; i < n; i++) {
    cin >> p[i].val >> p[i].k >> t;
    p[i].s = 0;
    for (int j = 0; j < t; j++) {
      scanf("%d", &a);
      p[i].s |= (1 << (a - 1));
    }
  }
  sort(p, p + n, cmp);
}
long long solve() {
  dp[0] = 0;
  int t = (1 << m) - 1;
  long long ans = INF;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j <= t; j++) {
      if (dp[j] == -1) continue;
      int u = p[i].s | j;
      if (dp[u] == -1)
        dp[u] = p[i].val + dp[j];
      else
        dp[u] = min(dp[u], p[i].val + dp[j]);
    }
    if (dp[t] != -1) ans = min(ans, dp[t] + p[i].k * b);
  }
  return ans == INF ? -1 : ans;
}
int main() {
  init();
  cout << solve() << endl;
  return 0;
}
