#include <bits/stdc++.h>
using namespace std;
struct Node {
  int val, num, sta;
} st[110];
int a, b, tot, rest, n, m, c;
bool cmp(const Node &a, const Node &b) { return a.num < b.num; }
unsigned long long dp[1050000], ans;
int main() {
  cin >> n >> m >> c;
  for (int i = 1; i <= n; i++) {
    cin >> st[i].val >> st[i].num >> a;
    st[i].sta = 0;
    for (int j = 1; j <= a; j++) {
      cin >> b;
      st[i].sta |= (1 << (b - 1));
    }
  }
  tot = (1 << m) - 1;
  sort(st + 1, st + n + 1, cmp);
  memset(dp, 0x3f, sizeof(dp));
  ans = dp[0];
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    for (int sta = 0; sta <= tot; sta++)
      dp[sta | st[i].sta] = min(dp[sta | st[i].sta], dp[sta] + st[i].val);
    ans = min(ans, dp[tot] + (unsigned long long)st[i].num * c);
  }
  if (ans == dp[tot + 1])
    puts("-1");
  else
    cout << ans << endl;
  return 0;
}
