func_code_string: #include <bits/stdc++.h>   using namespace std;   struct Segment {     int l, r, x, ls, rs, fa;   } seg[2000100];   int n, k, p[100100], cnt, pnt, b[2000100], w, ans[100100], res;   int Dfs(int &id, int l, int r) {     id = ++cnt;     seg[id].l = l, seg[id].r = r;     seg[id].x = 1;     if (r - l == 1) return 1;     int mid = (l + r) >> 1;     seg[id].x += Dfs(seg[id].ls, l, mid);     seg[id].x += Dfs(seg[id].rs, mid, r);     return seg[id].x;   }   void Vis(int x) {     if (!x) return;     b[x] = 1;     Vis(seg[x].ls);     Vis(seg[x].rs);   }   bool cmp(int x, int y) { return seg[x].l < seg[y].l; }   void Solve(int x) {     if (!x) return;     if (b[x]) {       for (int i = seg[x].l; i < seg[x].r; i++) ans[i] = res++;       return;     }     Solve(seg[x].rs);     Solve(seg[x].ls);   }   int main() {     scanf( %d%d , &n, &k);     Dfs(w, 0, n);     k = seg[1].x - k;     for (int i = 1; i <= cnt; i++)       if (!b[i]) {         if (k >= seg[i].x - 1 && seg[i].x > 1) {           k -= seg[i].x - 1;           p[++pnt] = i;           Vis(i);           if (!k) break;         }       }     if (k)       printf( -1 );     else {       res = 1;       Solve(1);       for (int i = n - 1; i >= 0; i--) ans[i] = ans[i] ? ans[i] : res++;       for (int i = 0; i < n; i++) printf( %d  , ans[i]);     }     return 0;   }   