#include <bits/stdc++.h>
using namespace std;
int n, m, b, x, tmp;
long long inf = 1222927042;
struct F {
  int x, k, s;
} f[111];
int vis[111];
bool cmp(F a, F s) { return a.k < s.k; }
long long dp[1 << 20];
long long work() {
  long long ans = inf;
  for (int i = 0; i < (1 << m); i++) dp[i] = inf;
  dp[0] = 0;
  for (int i = 0; i < n; i++) {
    for (int j = 0; j < (1 << m); j++)
      dp[j | f[i].s] = min(dp[j | f[i].s], dp[j] + f[i].x);
    ans = min(ans, dp[(1 << m) - 1] + (long long)(f[i].k) * b);
  }
  return ans;
}
int main() {
  scanf("%d%d%d", &n, &m, &b);
  inf *= inf;
  for (int i = 0; i < n; i++) {
    scanf("%d%d%d", &f[i].x, &f[i].k, &x);
    while (x--) {
      scanf("%d", &tmp);
      vis[tmp] = 1;
      f[i].s |= (1 << (tmp - 1));
    }
  }
  sort(f, f + n, cmp);
  for (int i = 1; i <= m; i++)
    if (!vis[i]) {
      cout << -1 << endl;
      return 0;
    }
  long long ans = work();
  cout << ans << endl;
}
