func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> tmp;   vector<vector<int>> sol[4];   int lov[7][7];   int hero(string s) {     if (s ==  Troll ) return 0;     if (s ==  Dracul ) return 1;     if (s ==  Anka ) return 2;     if (s ==  Snowy ) return 3;     if (s ==  Hexadecimal ) return 4;     if (s ==  Chapay )       return 5;     else       return 6;   }   void rec(int i, int a, int b, int c) {     if (i == 7) {       int z[] = {a, b, c};       sort(z, z + 3);       if (z[2] == 5 && z[1] == 1 && z[0] == 1) sol[0].push_back(tmp);       if (z[2] == 4 && z[1] == 2 && z[0] == 1) sol[1].push_back(tmp);       if (z[2] == 3 && z[1] == 3 && z[0] == 1) sol[2].push_back(tmp);       if (z[2] == 3 && z[1] == 2 && z[0] == 2) sol[3].push_back(tmp);       return;     }     tmp.push_back(1);     rec(i + 1, a + 1, b, c);     tmp.pop_back();     tmp.push_back(2);     rec(i + 1, a, b + 1, c);     tmp.pop_back();     tmp.push_back(3);     rec(i + 1, a, b, c + 1);     tmp.pop_back();   }   int main() {     rec(0, 0, 0, 0);     int arr[4][3];     pair<int, int> exp[3];     int mini = 1e9, maxi = 0;     set<int> minI;     arr[0][0] = 5, arr[0][1] = 1, arr[0][2] = 1;     arr[1][0] = 4, arr[1][1] = 2, arr[1][2] = 1;     arr[2][0] = 3, arr[2][1] = 3, arr[2][2] = 1;     arr[3][0] = 3, arr[3][1] = 2, arr[3][2] = 2;     int n;     cin >> n;     for (int i = 0; i < n; i++) {       string s, tmp, s2;       cin >> s >> tmp >> s2;       int x = hero(s), y = hero(s2);       lov[x][y] = 1;     }     for (int i = 0; i < 3; i++) {       cin >> exp[i].second;       exp[i].first = i;     }     for (int i = 0; i < 4; i++) {       int a = 0;       do {         int ans[3] = {};         for (int j = 0; j < 3; j++) ans[j] = exp[j].second / arr[i][j];         sort(ans, ans + 3);         if (ans[2] - ans[0] < mini) minI.clear();         if (ans[2] - ans[0] <= mini) minI.insert(i);         mini = min(ans[2] - ans[0], mini);         a++;       } while (next_permutation(exp, exp + 3));     }     for (set<int>::iterator it = minI.begin(); it != minI.end(); it++) {       for (int i = 0; i < sol[*it].size(); i++) {         int tmpA = 0;         for (int x = 0; x < 7; x++) {           for (int y = 0; y < 7; y++) {             if (x != y && sol[*it][i][x] == sol[*it][i][y] && lov[x][y]) tmpA++;           }         }         maxi = max(tmpA, maxi);       }     }     cout << mini <<     << maxi << endl;   }   