func_code_string: #include <bits/stdc++.h>   using namespace std;   int v[100];   bool cmp(int a, int b) { return a > b; }   int highest(int n) {     int i = 1, fact = 0;     while (2 * i <= n) {       i *= 2;       fact++;     }     return fact;   }   void permute(int left, int right, int pos, int last) {     if (!pos || (!last && pos == 1)) return;     int t = highest(pos);     pos -= (1 << t);     if (!last) {       left = right - t - 1;       swap(v[left + 1], v[right]);       sort(v + left + 2, v + right, cmp);       permute(left, right, pos, t);       return;     }     swap(v[left], v[right]);     --right;     if (last - t != 1) {       ++left;       sort(v + left, v + right + 1);       permute(left, right, pos + (1 << t), 0);       return;     }     permute(left, right, pos, t);   }   int main() {     int n, m, num = 1, piv = 0, pos, t;     cin >> n >> m;     for (int i = 0; i < n; ++i) v[i] = i + 1;     permute(0, n - 1, m, 0);     for (int i = 0; i < n; ++i) cout << v[i] <<    ;     return 0;   }   