func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, m, mon_cost;   vector<tuple<int, int, int>> friends;   const long long oo = 1LL << 60;   void solve() {     cin >> n >> m >> mon_cost;     friends.resize(n);     for (int i = 0; i < n; ++i) {       int x, k, num;       cin >> x >> k >> num;       int mask = 0;       for (int j = 0; j < num; ++j) {         int y;         cin >> y;         y--;         mask = mask | (1 << y);       }       friends[i] = tie(x, k, mask);     }     sort(friends.begin(), friends.end(),          [](tuple<int, int, int> lhs, tuple<int, int, int> rhs) {            return get<1>(lhs) < get<1>(rhs);          });     vector<vector<long long>> dp(2, vector<long long>(1 << m, oo));     int x, k, tasks;     tie(x, k, tasks) = friends[0];     dp[1][0] = 0;     dp[1][tasks] = x;     long long ans = oo;     for (int i = 0; i < n; ++i) {       int cur = i % 2;       int prev = cur ^ 1;       tie(x, k, tasks) = friends[i];       for (int mask = 0; mask < (1 << m); ++mask) {         dp[cur][mask | tasks] = min(dp[cur][mask | tasks], dp[prev][mask] + x);         dp[cur][mask] = min(dp[cur][mask], dp[prev][mask]);       }       long long val = dp[cur][(1 << m) - 1] + 1LL * k * mon_cost;       ans = min(ans, val);     }     if (ans < oo) {       cout << ans <<   n ;     } else {       cout << -1 <<   n ;     }   }   int main() { solve(); }   