func_code_string: #include <bits/stdc++.h>   using namespace std;   vector<int> v;   vector<int> primes;   bool flag[100005];   bool flag2[100005];   void sieve(int n) {     for (int i = 2; i <= n; i++) {       if (!flag2[i]) {         primes.push_back(i);         for (int j = 2 * i; j <= n; j += i) {           flag2[j] = true;         }       }     }     int sz = 0;     for (int i = 1; i < primes.size(); i++) {       v.push_back(primes[i]);       sz++;       for (int j = primes[i] * 3; j <= n; j += primes[i]) {         if (!flag[j]) {           v.push_back(j);           sz++;           flag[j] = true;         }       }       if (sz % 2 == 1) {         if (primes[i] * 2 <= n && !flag[primes[i] * 2]) {           v.push_back(primes[i] * 2);           sz++;           flag[primes[i] * 2] = true;         } else {           flag[v[sz - 1]] = false;           v.erase(v.begin() + sz - 1);           sz--;         }       }     }     for (int i = 0; i < 1; i++) {       for (int j = primes[i]; j <= n; j += primes[i]) {         if (!flag[j]) {           v.push_back(j);           sz++;           flag[j] = true;         }       }       if (sz % 2 == 1) {         flag[v[sz - 1]] = false;         v.erase(v.begin() + sz - 1);         sz--;       }     }   }   int main() {     int n;     scanf( %d , &n);     if (n < 4) {       printf( 0 n );       return 0;     }     sieve(n);     printf( %d n , v.size() / 2);     for (int i = 0; i < v.size(); i++) {       printf( %d%s , v[i], (i & 1) ?   n  :    );     }     return 0;   }   