func_code_string: #include <bits/stdc++.h>   using namespace std;   const int mod = 1000 * 1000 * 1000 + 7;   const int INF = 1e9 + 100;   const long long LINF = 1e18 + 100;   long long x, k;   const int n = 1e5;   vector<long long> divs;   vector<long long> ddv[7010];   vector<long long> fk[7010];   void getnxt(const vector<long long> &cur, vector<long long> &res) {     res.clear();     for (int ptr = 0; ptr < (int)cur.size() && (int)res.size() < n; ptr++) {       int p = lower_bound((divs).begin(), (divs).end(), cur[ptr]) - divs.begin();       for (int i = 0; i < (int)ddv[p].size() && (int)res.size() < n; i++)         res.push_back(ddv[p][i]);     }   }   void get2i(const vector<long long> &cur, vector<long long> &res) {     res.clear();     for (int i = (0); i < (7010); i++) fk[i].clear();     int cnum = 0;     for (long long u : cur) {       int p = lower_bound((divs).begin(), (divs).end(), u) - divs.begin();       fk[cnum].push_back(u);       if (p == cnum) cnum++;     }     for (int ptr = 0; ptr < (int)cur.size() && (int)res.size() < n; ptr++) {       int p = lower_bound((divs).begin(), (divs).end(), cur[ptr]) - divs.begin();       for (int i = 0; i < (int)fk[p].size() && (int)res.size() < n; i++)         res.push_back(fk[p][i]);     }     vector<long long> cop;     cop.swap(res);     getnxt(cop, res);   }   void getkth(vector<long long> &res, int k) {     if (k == 1) {       res = divs;       return;     }     getkth(res, k / 2);     vector<long long> cop;     cop.swap(res);     get2i(cop, res);     if (k % 2 == 0) return;     cop.clear();     cop.swap(res);     getnxt(cop, res);   }   int32_t main(void) {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     cin >> x >> k;     if (k == 0) return cout << x <<   n , 0;     if (x == 1) {       return cout <<  1 n , 0;     }     if (k > n) {       for (int i = (0); i < (n); i++) cout <<  1  ;       cout <<   n ;       return 0;     }     for (long long i = 1; i * i <= x; i++) {       if (x % i == 0) {         divs.push_back(i);         if (i * i != x) divs.push_back(x / i);       }     }     sort((divs).begin(), (divs).end());     for (int i = (0); i < ((int)divs.size()); i++) {       for (int j = (0); j < (i + 1); j++) {         if (divs[i] % divs[j] == 0) ddv[i].push_back(divs[j]);       }     }     vector<long long> ans;     getkth(ans, k);     for (long long u : ans) cout << u <<    ;     cout <<   n ;     return 0;   }   