func_code_string: #include <bits/stdc++.h>   using namespace std;   long int n, k;   bool prime[10000001];   vector<long int> v;   void sieve(long int n) {     prime[0] = false;     prime[1] = false;     long int m = (long int)sqrt(n);     for (long int i = 2; i <= m; i++)       if (prime[i])         for (long int k = i * i; k <= n; k += i) prime[k] = false;   }   int main() {     long int i, j, a, b, c;     scanf( %ld %ld , &n, &k);     memset(prime, true, sizeof(prime));     a = 1000 * 1000;     sieve(a);     for (i = 1; i <= a; i++) {       if (prime[i] == true) {         v.push_back(i);       }     }     if (k == 0 && n == 1) {       printf( 1 );     } else if (n < 2) {       printf( -1 );     } else {       if (n % 2 == 1) {         a = (n - 1) / 2;       } else {         a = n / 2;       }       if (a > k) {         printf( -1 );       } else if (a == k) {         i = 1;         vector<long int>::iterator it;         for (it = v.begin(); it != v.end() && (i <= a); ++it) {           if (*it == 2) {             continue;           } else {             printf( %ld %ld  , *it, *it + 1);             i++;           }         }         if (n % 2 == 1) {           printf( %ld , *it);         }       } else {         b = k - (a - 1);         printf( %ld %ld  , b, 2 * b);         i = 1;         vector<long int>::iterator it;         for (it = v.begin(); it != v.end() && (i < a); ++it) {           if (*it == 2) {             continue;           }           if ((*it == b) || ((*it + 1) == b) || ((*it + 1) == (2 * b))) {             continue;           } else {             printf( %ld %ld  , *it, *it + 1);             i++;           }         }         if (n % 2 == 1) {           while ((*it == b) || ((*it + 1) == b) || ((*it + 1) == (2 * b))) {             ++it;           }           printf( %ld , *it);         }       }     }     return 0;   }   