func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( O3 )   #pragma GCC target( sse4 )   using namespace std;   template <class c>   struct rge {     c b, e;   };   template <class c>   rge<c> range(c i, c j) {     return rge<c>{i, j};   }   template <class c>   auto dud(c* x) -> decltype(cerr << *x, 0);   template <class c>   char dud(...);   struct debug {     template <class c>     debug& operator<<(const c&) {       return *this;     }   };   map<string, long long> mp;   const long long N = 8;   long long a[N][N];   long long ans1 = (long long)1e18 + 5, ans2 = 0;   vector<long long> vv(3);   vector<long long> ini = {0, 1, 2, 3, 4, 5, 6};   int32_t main() {     ios_base::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     long long n;     mp[ Anka ] = 0, mp[ Chapay ] = 1, mp[ Cleo ] = 2, mp[ Troll ] = 3,     mp[ Dracul ] = 4, mp[ Snowy ] = 5, mp[ Hexadecimal ] = 6;     cin >> n;     string x, cc1, y;     for (long long i = 0; i < n; i++) {       cin >> x >> cc1 >> y;       a[mp[x]][mp[y]] = 1;     }     cin >> vv[0] >> vv[1] >> vv[2];     do {       for (long long i = 1; i < 5; i++) {         for (long long j = i + 1; j < 6; j++) {           vector<vector<long long> > aa(3);           for (long long k = 0; k < i; k++) aa[0].push_back(ini[k]);           for (long long k = i; k < j; k++) aa[1].push_back(ini[k]);           for (long long k = j; k < 7; k++) aa[2].push_back(ini[k]);           vector<vector<long long> > cur1 = aa;           long long lik = 0;           for (long long ii = 0; ii < 3; ii++) {             for (long long jj = 0; jj < (long long)cur1[ii].size(); jj++) {               for (long long k = jj + 1; k < (long long)cur1[ii].size(); k++) {                 if (a[cur1[ii][jj]][cur1[ii][k]]) {                   lik++;                 }                 if (a[cur1[ii][k]][cur1[ii][jj]]) lik++;               }             }           }           vector<long long> cur = {0, 1, 2};           vector<long long> arr(3, 0);           do {             arr[0] = (vv[cur[0]] / (long long)aa[0].size());             arr[1] = (vv[cur[1]] / (long long)aa[1].size());             arr[2] = (vv[cur[2]] / (long long)aa[2].size());             long long ans = 0;             for (long long ii = 0; ii < 3; ii++) {               for (long long jj = ii + 1; jj < 3; jj++) {                 ans = max(ans, abs(arr[ii] - arr[jj]));               }             }             if (ans <= ans1) {               if (ans == ans1) {                 if (lik > ans2) {                   ans2 = lik;                 }               } else {                 ans1 = ans;                 ans2 = lik;               }             }           } while (next_permutation((cur).begin(), (cur).end()));         }       }     } while (next_permutation((ini).begin(), (ini).end()));     cout << ans1 <<     << ans2 <<   n ;     return 0;   }   