func_code_string: #include <bits/stdc++.h>   using namespace std;   int a[107], b[107];   int ans[10000007];   int n, nMax, nMaxid, times, nMin, aol, aMin, aMax, aL;   void init() {     memset(a, 0, sizeof(a));     memset(ans, 0, sizeof(ans));     memset(b, 0, sizeof(b));     aol = 0;     aL = 0;   }   int check(int x) {     nMax = 0;     times = 0;     for (int i = 1; i <= n; i++) {       if (a[i] > nMax) {         nMax = a[i];         nMaxid = i;         times = 0;       }       if (a[i] == nMax) times++;     }     if (times < x) return 1;     return 0;   }   void makeans(int x) {     times -= x;     for (int i = 1; i <= n; i++)       if (a[i] == nMax) {         x--;         a[i]--;         ans[++aol] = i;         if (x == 0) break;       }     ++aol;     aL++;   }   void printans(int x) {     if (ans[x] == 0) {       for (int i = 1; i <= n; i++) printf( %d , b[i]);       printf(  n );       memset(b, 0, sizeof(b));     } else       b[ans[x]] = 1;   }   int main() {     while (scanf( %d , &n) != EOF) {       init();       for (int i = 1; i <= n; i++) scanf( %d , &a[i]);       while (check(2)) {         int yMax = -1, yID = 0;         for (int i = 1; i <= n; i++)           if (a[i] > yMax) {             if (i == nMaxid) continue;             yMax = a[i];             yID = i;           }         ans[++aol] = yID;         ans[++aol] = nMaxid;         ++aol;         aL++;         if (a[yID]) a[yID]--;         a[nMaxid]--;       }       aMin = 107;       aMax = 0;       for (int i = 1; i <= n; i++)         if (a[i] < aMin) aMin = a[i];       while (check(n)) {         if (times % 2 == 1) makeans(3);         while (times) makeans(2);       }       printf( %d n%d n , aMin, aL);       for (int i = 1; i <= aol; i++) printans(i);     }     return 0;   }   