func_code_string: #include <bits/stdc++.h>   using namespace std;   int s[10];   struct node {     int l, r, now, h, a;   } f[10][10];   int i, j, k, l, n, m, x, y, h, a, ans = 100000, ans1;   inline void work(int o) {     if (o != n && s[n] > ans) return;     int gt = 0;     if (o == 1) {       if (s[o] + s[n] == 0 && s[o] <= 0) {         int gtw = 0;         if (s[n] < ans) {           for (int i = 1; i <= n; i++)             for (int j = i + 1; j <= n; j++)               gtw =                   gtw + f[i][j].now * f[i][j].now + (f[i][j].now > 0) * f[i][j].a;           ans1 = gtw;           ans = s[n];         } else if (s[n] == ans) {           for (int i = 1; i <= n; i++)             for (int j = i + 1; j <= n; j++)               gtw =                   gtw + f[i][j].now * f[i][j].now + (f[i][j].now > 0) * f[i][j].a;           ans1 = max(ans1, gtw);         }       }       return;     }     for (int i = 1; i < o; i++) {       if (s[o] > 0) {         if (o == 2) {           for (int gt = 0; gt <= s[o]; gt++) {             if (gt > f[1][o].now - f[1][o].l) break;             s[o] = s[o] - gt;             s[1] = s[1] + gt;             f[1][o].now -= gt;             if (s[o] == 0 || o == n) work(o - 1);             s[o] += gt;             f[1][o].now += gt;             s[1] -= gt;           }         } else if (o == 3) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].now - f[1][o].l) break;             for (int gt = 0; gt <= s[o] - j; gt++) {               if (gt > f[2][o].now - f[2][o].l) break;               s[o] = s[o] - j - gt;               s[1] = s[1] + j;               s[2] = s[2] + gt;               f[1][o].now -= j;               f[2][o].now -= gt;               if (s[o] == 0 || o == n) work(o - 1);               s[o] = s[o] + gt + j;               s[1] -= j;               s[2] -= gt;               f[1][o].now += j;               f[2][o].now += gt;             }           }         } else if (o == 4) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].now - f[1][o].l) break;             for (int k = 0; k <= s[o] - j; k++) {               if (k > f[2][o].now - f[2][o].l) break;               for (int gt = 0; gt <= s[o] - j - k; gt++) {                 if (gt > f[3][o].now - f[3][o].l) break;                 s[o] = s[o] - j - k - gt;                 s[1] += j;                 s[2] += k;                 s[3] += gt;                 f[1][o].now -= j;                 f[2][o].now -= k;                 f[3][o].now -= gt;                 if (s[o] == 0 || o == n) work(o - 1);                 s[o] = s[o] + j + k + gt;                 s[1] -= j;                 s[2] -= k;                 s[3] -= gt;                 f[1][o].now += j;                 f[2][o].now += k;                 f[3][o].now += gt;               }             }           }         }         if (o == 5) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].now - f[1][o].l) break;             for (int k = 0; k <= s[o] - j; k++) {               if (k > f[2][o].now - f[2][o].l) break;               for (int l = 0; l <= s[o] - j - k; l++) {                 for (int gt = 0; gt <= s[o] - j - k - l; gt++) {                   if (l > f[3][o].now - f[3][o].l) break;                   if (gt > f[4][o].now - f[4][o].l) break;                   s[o] = s[o] - j - k - gt - l;                   s[1] += j;                   s[2] += k;                   s[3] += l;                   s[4] += gt;                   f[1][o].now -= j;                   f[2][o].now -= k;                   f[3][o].now -= l;                   f[4][o].now -= gt;                   if (s[o] == 0 || o == n) work(o - 1);                   s[o] = s[o] + j + k + gt + l;                   s[1] -= j;                   s[2] -= k;                   s[3] -= l;                   s[4] -= gt;                   f[1][o].now += j;                   f[2][o].now += k;                   f[3][o].now += l;                   f[4][o].now += gt;                 }               }             }           }         }         if (o == 6) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].now - f[1][o].l) break;             for (int k = 0; k <= s[o] - j; k++) {               if (k > f[2][o].now - f[2][o].l) break;               for (int l = 0; l <= s[o] - j - k; l++) {                 if (l > f[3][o].now - f[3][o].l) break;                 for (int q = 0; q <= s[o] - j - k - l; q++) {                   if (q > f[4][o].now - f[4][o].l) break;                   for (int gt = 0; gt <= s[o] - j - k - l - q; gt++) {                     if (gt > f[5][o].now - f[5][o].l) break;                     s[o] = s[o] - j - k - gt - l - q;                     s[1] += j;                     s[2] += k;                     s[3] += l;                     s[4] += q;                     s[5] += gt;                     f[1][o].now -= j;                     f[2][o].now -= k;                     f[3][o].now -= l;                     f[4][o].now -= q;                     f[5][o].now -= gt;                     if (s[o] == 0 || o == n) work(o - 1);                     s[o] = s[o] + j + k + gt + l + q;                     s[1] -= j;                     s[2] -= k;                     s[3] -= l;                     s[4] -= q;                     s[5] -= gt;                     f[1][o].now += j;                     f[2][o].now += k;                     f[3][o].now += l;                     f[4][o].now += q;                     f[5][o].now += gt;                   }                 }               }             }           }         }       } else {         if (o == 2) {           for (int gt = 0; gt <= s[o]; gt++) {             if (gt > f[1][o].r - f[1][o].now) break;             s[o] = s[o] + gt;             s[1] = s[1] - gt;             f[1][o].now += gt;             if (s[o] == 0 || o == n) work(o - 1);             s[o] -= gt;             s[1] += gt;             f[1][o].now -= gt;           }         } else if (o == 3) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].r - f[1][o].now) break;             for (int gt = 0; gt <= s[o] - j; gt++) {               if (gt > f[2][o].r - f[2][o].now) break;               s[o] = s[o] + j + gt;               s[1] = s[1] - j;               s[2] = s[2] - gt;               f[1][o].now += j;               f[2][o].now += gt;               if (s[o] == 0 || o == n) work(o - 1);               s[o] = s[o] - gt - j;               s[1] += j;               s[2] += gt;               f[1][o].now -= j;               f[2][o].now -= gt;             }           }         } else if (o == 4) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].r - f[1][o].now) break;             for (int k = 0; k <= s[o] - j; k++) {               if (k > f[2][o].r - f[2][o].now) break;               for (int gt = 0; gt <= s[o] - j - k; gt++) {                 if (gt > f[3][o].r - f[3][o].now) break;                 s[o] = s[o] + j + k + gt;                 s[1] -= j;                 s[2] -= k;                 s[3] -= gt;                 f[1][o].now += j;                 f[2][o].now += k;                 f[3][o].now += gt;                 if (s[o] == 0 || o == n) work(o - 1);                 s[o] = s[o] - j - k - gt;                 s[1] += j;                 s[2] += k;                 s[3] += gt;                 f[1][o].now -= j;                 f[2][o].now -= k;                 f[3][o].now -= gt;               }             }           }         }         if (o == 5) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].r - f[1][o].now) break;             for (int k = 0; k <= s[o] - j; k++) {               if (k > f[2][o].r - f[2][o].now) break;               for (int l = 0; l <= s[o] - j - k; l++) {                 if (l > f[3][o].r - f[3][o].now) break;                 for (int gt = 0; gt <= s[o] - j - k - l; gt++) {                   if (gt > f[4][o].r - f[4][o].now) break;                   s[o] = s[o] + j + k + gt + l;                   s[1] -= j;                   s[2] -= k;                   s[3] -= l;                   s[4] -= gt;                   f[1][o].now += j;                   f[2][o].now += k;                   f[3][o].now += l;                   f[4][o].now += gt;                   if (s[o] == 0 || o == n) work(o - 1);                   s[o] = s[o] - j - k - gt - l;                   s[1] += j;                   s[2] += k;                   s[3] += l;                   s[4] += gt;                   f[1][o].now -= j;                   f[2][o].now -= k;                   f[3][o].now -= l;                   f[4][o].now -= gt;                 }               }             }           }         }         if (o == 6) {           for (int j = 0; j <= s[o]; j++) {             if (j > f[1][o].r - f[1][o].now) break;             for (int k = 0; k <= s[o] - j; k++) {               if (k > f[2][o].r - f[2][o].now) break;               for (int l = 0; l <= s[o] - j - k; l++) {                 if (l > f[3][o].r - f[3][o].now) break;                 for (int q = 0; q <= s[o] - j - k - l; q++) {                   if (q > f[4][o].r - f[4][o].now) break;                   for (int gt = 0; gt <= s[o] - j - k - l - q; gt++) {                     if (gt > f[5][o].r - f[5][o].now) break;                     s[o] = s[o] + j + k + gt + l + q;                     s[1] -= j;                     s[2] -= k;                     s[3] -= l;                     s[4] -= q;                     s[5] -= gt;                     f[1][o].now += j;                     f[2][o].now += k;                     f[3][o].now += l;                     f[4][o].now += q;                     f[5][o].now += gt;                     if (s[o] == 0 || o == n) work(o - 1);                     s[o] = s[o] - j - k - gt - l - q;                     s[1] += j;                     s[2] += k;                     s[3] += l;                     s[4] += q;                     s[5] += gt;                     f[1][o].now -= j;                     f[2][o].now -= k;                     f[3][o].now -= l;                     f[4][o].now -= q;                     f[5][o].now -= gt;                   }                 }               }             }           }         }       }     }   }   int main() {     scanf( %d , &n);     m = n * (n - 1) / 2;     for (i = 1; i <= m; i++) {       scanf( %d%d%d%d%d , &x, &y, &l, &h, &a);       f[x][y].l = l;       f[x][y].r = h;       f[x][y].a = a;       f[x][y].now = h;       s[y] += h;       s[x] -= h;     }     work(n);     if (ans == 100000)       printf( -1 -1 );     else       printf( %d %d n , ans, ans1);   }   