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 JAVA):

Solution:
import static java.lang.Math.*;
import static java.util.Arrays.* ;

import java.util.*;
import java.io.*;

public class D
{
    int gcd(int a , int b)
    {
        return b == 0 ? a : gcd(b , a % b) ;
    }
    void main() throws Exception
    {
        Scanner sc = new Scanner(System.in);
        PrintWriter out = new PrintWriter(System.out);
        int n = sc.nextInt() , k = sc.nextInt() ;
        if(k == n)
            out.println(-1);
        else
        {
            TreeSet<Integer> set = new TreeSet<>() ;
            int [] a = new int [n + 1] ;
            for(int i = 1 ; i <= n ; i ++)
                a[i] = i ;
            int i = 2 ;
            set.add(1) ;
            for(int cnt = 0;  i <= n && cnt < k; i ++ , cnt ++) ;
            for( ; i <= n ; i ++)
            {
                Integer j = set.first() ;
                for(; j != null; j = set.higher(j))
                {
                    if(gcd(a[j] , i) == 1 && gcd(a[i] , j) == 1)
                    {
                        a[j] ^= a[i] ;
                        a[i] ^= a[j] ;
                        a[j] ^= a[i] ;
                        break;
                    }
                }
                set.add(i) ;
            }
            for(i = 1 ; i <= n ; i ++)
                if(gcd(a[i] , i) > 1)
                    k -- ;
            if(k == 0)
                for(i = 1 ; i <= n ; i ++)
                    out.print(a[i]+" ");
            else
                out.println(-1);
        }
        out.flush();
        out.close();
    }

    class Scanner
    {
        BufferedReader br;
        StringTokenizer st;

        Scanner(InputStream in)
        {
            br = new BufferedReader(new InputStreamReader(System.in));
        }

        String next() throws Exception
        {
            while (st == null || !st.hasMoreTokens())
                st = new StringTokenizer(br.readLine());
            return st.nextToken();
        }
        String nextLine() throws Exception
        {
            return br.readLine() ;
        }
        int nextInt() throws Exception { return Integer.parseInt(next()); }

        long nextLong() throws Exception { return Long.parseLong(next()); }

        double nextDouble() throws Exception { return Double.parseDouble(next());}
    }

    public static void main (String [] args) throws Exception {(new D()).main();}

}