func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, p;   struct Node {     int i, d;   } d[100005];   vector<int> v[100005 << 1];   bool cmp(Node x, Node y) { return x.d > y.d; }   int main() {     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       scanf( %d , &d[i].d);       d[i].i = 2 * i;     }     sort(d + 1, d + n + 1, cmp);     for (int i = 1; i <= n; i++) {       v[p++].push_back(d[i].i);     }     for (int i = 1; i <= n; i++) {       if (i + d[i].d - 1 == p) {         v[p++].push_back(d[i].i - 1);       } else {         v[i + d[i].d - 2].push_back(d[i].i - 1);       }     }     for (int i = 0; i < p; i++) {       for (int j = 1; j < v[i].size(); j++) {         printf( %d %d n , v[i][0], v[i][j]);       }     }     for (int i = 1; i < p; i++) {       printf( %d %d n , v[i - 1][0], v[i][0]);     }     return 0;   }   