Problem: Levko loves permutations very much. A permutation of length n is a sequence of distinct positive integers, each is at most n.

Let’s assume that value gcd(a, b) shows the greatest common divisor of numbers a and b. Levko assumes that element pi of permutation p1, p2, ... , pn is good if gcd(i, pi) > 1. Levko considers a permutation beautiful, if it has exactly k good elements. Unfortunately, he doesn’t know any beautiful permutation. Your task is to help him to find at least one of them.

Input

The single line contains two integers n and k (1 ≤ n ≤ 105, 0 ≤ k ≤ n).

Output

In a single line print either any beautiful permutation or -1, if such permutation doesn’t exist.

If there are multiple suitable permutations, you are allowed to print any of them.

Examples

Input

4 2


Output

2 4 3 1

Input

1 1


Output

-1

Note

In the first sample elements 4 and 3 are good because gcd(2, 4) = 2 > 1 and gcd(3, 3) = 3 > 1. Elements 2 and 1 are not good because gcd(1, 2) = 1 and gcd(4, 1) = 1. As there are exactly 2 good elements, the permutation is beautiful.

The second sample has no beautiful permutations.

Solution (in CPP):

Solution:
#include <bits/stdc++.h>
using namespace std;
int dx[] = {-1, 0, 1, 0, -1, 1, 1, -1}, dy[] = {0, -1, 0, 1, -1, -1, 1, 1};
int kx[] = {2, 1, -1, -2, -2, -1, 1, 2}, ky[] = {1, 2, 2, 1, -1, -2, -2, -1};
template <class T>
T _pow(T N, T P) {
  return (P == 0) ? 1 : N * _pow(N, P - 1);
}
template <class T>
T _max(T a, T b) {
  return (!(a < b) ? a : b);
}
template <class T>
T _min(T a, T b) {
  return (a < b ? a : b);
}
bool isVowel(char ch) {
  ch = tolower(ch);
  return ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u';
}
long long bigmod(long long B, long long P, long long M) {
  long long R = 1;
  while (P > 0) {
    if (P % 2) {
      R = (R * B) % M;
    }
    P /= 2;
    B = (B * B) % M;
  }
  return (int)R;
}
long long nCr(double n, double r) {
  double ans = 1;
  if (r > n - r) r = n - r;
  for (int i = 1; i <= r; i++) {
    ans *= (n - i + 1);
    ans /= i;
  }
  return (long long)ans;
}
long long modmul(long long a, long long b, long long m) {
  return ((a % m) * (b % m)) % m;
}
string toString(int n) {
  stringstream ss;
  ss << n;
  return ss.str();
}
int toInt(string s) {
  int r = 0;
  istringstream sin(s);
  sin >> r;
  return r;
}
int main() {
  int n, k;
  cin >> n >> k;
  if (k < n - 1) {
    cout << k + 2 << ' ';
    for (int i = 2; i <= k + 1; i++) cout << i << ' ';
    for (int i = k + 2; i <= n - 1; i++) cout << i + 1 << ' ';
    cout << 1 << endl;
  } else if (k == n - 1) {
    for (int i = 1; i <= n; i++) cout << i << ' ';
    cout << endl;
  } else
    cout << -1 << endl;
  return 0;
}