func_code_string: #include <bits/stdc++.h>   using namespace std;   int n, d, h;   struct edge {     int n1;     int n2;   };   edge vertices[100000];   int main() {     cin >> n >> d >> h;     if (d > 2 * h || (h == 1 && d == 1 && n > 2))       cout <<  -1  << endl;     else {       int idx = 0;       int usedNode = 1;       for (int i = 0; i < h; i++) {         vertices[idx++] = edge{usedNode - 1, usedNode++};       }       if (d > h) {         vertices[idx++] = edge{0, usedNode++};         for (int i = 1; i < (d - h); i++) {           vertices[idx++] = edge{usedNode - 1, usedNode++};         }       }       int start = (h > 1) ? 1 : 0;       for (int i = h + (d - h); i < n - 1; i++) {         vertices[idx++] = edge{start, usedNode++};       }       for (int i = 0; i < n - 1; i++) {         cout << vertices[i].n1 + 1 <<     << vertices[i].n2 + 1 << endl;       }     }   }   