func_code_string: #include <bits/stdc++.h>   using namespace std;   const signed long long Infinity = 1000000001;   const long double Epsilon = 1e-9;   template <typename T, typename U>   ostream& operator<<(ostream& os, const pair<T, U>& p) {     return os <<  (  << p.first <<  ,  << p.second <<  ) ;   }   template <typename T>   ostream& operator<<(ostream& os, const vector<T>& V) {     os <<  [ ;     for (__typeof(V.begin()) i = V.begin(); i != V.end(); ++i)       os << *i << (i - V.begin() + 1 == ((int)V.size()) ?    :  , );     os <<  ] n ;     return os;   }   template <typename T>   ostream& operator<<(ostream& os, const set<T>& S) {     os <<  ( ;     for (__typeof(S.begin()) i = S.begin(); i != S.end(); ++i)       os << *i << (*i == *S.rbegin() ?    :  , );     os <<  ) n ;     return os;   }   template <typename T, typename U>   ostream& operator<<(ostream& os, const map<T, U>& M) {     os <<  { ;     for (__typeof(M.begin()) i = M.begin(); i != M.end(); ++i)       os << *i << (i->first == M.rbegin()->first ?    :  , );     os <<  } n ;     return os;   }   int N, K;   void read_data() { scanf( %d %d , &N, &K); }   void solve() {     if (N == K) {       printf( -1 n );     } else {       for (int(i) = (1); (i) <= (N - K - 1); (i)++) printf( %d  , i + 1);       printf( 1  );       for (int(i) = (N - K + 1); (i) <= (N); (i)++) printf( %d  , i);     }   }   int main() {     read_data();     solve();     return 0;   }   