#include <bits/stdc++.h>
using namespace std;
int n, m, b;
int x[105], k[106], g[105], s[105];
pair<long long, pair<long long, long long> > f[105];
long long dp[2000005];
int p[2000005];
int main() {
  scanf("%d%d%d", &n, &m, &b);
  for (int i = 0; i < n; i++) {
    scanf("%d%d%d", &x[i], &k[i], &g[i]);
    int t;
    for (int j = 0; j < g[i]; j++) {
      scanf("%d", &t);
      s[i] += (1 << (t - 1));
    }
  }
  for (int i = 1; i <= n; i++)
    f[i] = make_pair(k[i - 1], make_pair(x[i - 1], s[i - 1]));
  sort(f + 1, f + n + 1);
  dp[0] = 0;
  p[0] = 1;
  long long tmp = 0, ans = -1;
  for (int i = 1; i <= n; i++) {
    if (f[i].first != f[i - 1].first) tmp += (f[i].first - f[i - 1].first) * b;
    for (int j = 0; j < (1 << m); j++)
      if (p[j]) {
        int now = f[i].second.second | j;
        if (p[now])
          dp[now] = min(dp[now], dp[j] + f[i].second.first);
        else
          dp[now] = dp[j] + f[i].second.first, p[now] = 1;
      }
    if (p[(1 << m) - 1])
      if (ans == -1)
        ans = dp[(1 << m) - 1] + tmp;
      else
        ans = min(ans, dp[(1 << m) - 1] + tmp);
  }
  cout << ans << endl;
  return 0;
}
