#include <bits/stdc++.h>
using namespace std;
vector<pair<pair<long long, long long>, int> > V;
long long dp[1 << 20];
int main() {
  int n, m;
  long long b;
  cin >> n >> m >> b;
  for (int i = 0; i < (1 << m); i++) dp[i] = (4 * 1000000000000000000);
  dp[0] = 0;
  for (int i = 1; i <= n; i++) {
    long long x, k, pr;
    cin >> x >> k >> pr;
    V.push_back(make_pair(make_pair(k, x), 0));
    int idx = V.size() - 1;
    for (int j = 0; j < pr; j++) {
      int a;
      cin >> a;
      V[idx].second |= (1 << (a - 1));
    }
  }
  sort(V.begin(), V.end());
  long long last = 0;
  long long res = (4 * 1000000000000000000);
  for (int i = 0; i < V.size(); i++) {
    long long need = V[i].first.first;
    for (int j = 0; j < (1 << m); j++) {
      dp[j] = dp[j] + (b * (need - last));
    }
    last = need;
    int mask = V[i].second;
    long long cost = V[i].first.second;
    for (int j = 0; j < (1 << m); j++) {
      dp[j | mask] = min(dp[j | mask], dp[j] + cost);
    }
    res = min(res, dp[(1 << m) - 1]);
  }
  if (res >= (4 * 1000000000000000000))
    cout << -1 << endl;
  else
    cout << res << endl;
}
