func_code_string: #include <bits/stdc++.h>   using namespace std;   int A[] = {2, 3, 5, 7, 11, 13, 17, 19}, n, B[5005], vmax;   priority_queue<int> Q;   set<int> S;   inline int sol(int i) {     int j, k, t, first, second;     B[0] = 1;     for (j = 1; j <= n; j++) {       first = B[j - 1] * A[0];       for (t = 0; t < j; t++)         for (k = 0; k < i; k++)           if (B[t] * A[k] > B[j - 1]) first = min(first, B[t] * A[k]);       B[j] = first;       if (first > vmax) return 0;     }     for (j = 0; j < i; j++) {       first = 0;       for (k = 1; k <= n; k++)         if (B[k] % A[j] == 0) first++;       if (first < (n + 1) / 2) {         S.clear();         for (k = 1; k <= n; k++) S.insert(B[k]);         first = (n + 1) / 2 - first;         for (k = 1; k <= n && first; k++)           if (B[k] % A[j] != 0) {             second = B[k] * A[j];             while (S.find(second) != S.end()) {               second *= A[j];               if (second > vmax) return 0;             }             if (second > vmax) return 0;             S.erase(B[k]);             B[k] = second;             S.insert(B[k]);             first--;           }         sort(B + 1, B + n + 1);       }     }     for (j = 0; j < i; j++) {       first = 0;       for (k = 1; k <= n; k++)         if (B[k] % A[j] == 0) first++;       if (first < (n + 1) / 2) return 0;     }     return 1;   }   int main() {     cin >> n;     vmax = 2 * n * n;     int i;     for (i = 1; i <= 8; i++)       if (sol(i)) break;     printf( %d , B[1]);     for (i = 2; i <= n; i++) printf(  %d , B[i]);     printf(  n );     return 0;   }   