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 java.util.*;

public class Watermelon {
	static int x;
	public static void main(String[] args) {
	       Scanner sc=new Scanner(System.in);
	       int n=sc.nextInt();
	       int c=sc.nextInt();
	       int k=n-c;
	       int[] arr=new int[n];
	       for(int i=0;i<n;i++)
	    	   arr[i]=i+1;
	      try{
	    	  if(c>=n)
	    		  throw new Exception();
	    	  if(k%2==0){
	    	   int i=0;
	    	   while(k>0){
	    		   int temp=arr[i];
	    			arr[i]=arr[i+1];
	    			arr[i+1]=temp;
	    			i+=2;
	    		   k-=2;
	    	   }
	       }
	       else{
	    	   if(k==1)
	    		   {
	    		   display(arr);
	    		   System.exit(0);
	    		   }
	    	   int x=k;
	    	   k--;
	    	   int i=0;
	    	   while(k>0){
	    		   int temp=arr[i];
	    			arr[i]=arr[i+1];
	    			arr[i+1]=temp;
	    			i+=2;
	    		   k-=2;
	    	   }
	    	   int tempx=arr[1];
	    	   arr[1]=arr[x-1];
	    	   arr[x-1]=tempx;
	    	   
	       }}
	      catch(Exception e){
	    	  System.out.println(-1);System.exit(0);
	      }
	    display(arr);
	}
	
	private static int gcd(int a, int b)
	{
	    while (b > 0)
	    {
	    	int temp = b;
	        b = a % b; // % is remainder
	        a = temp;
	    }
	    return a;
	}
	private static int lcm(int a, int b)
	{
	    return a * (b / gcd(a, b));
	}
	static int[] toFractionPos(int x,int y){
		int a=gcd(x,y);
		int[] arr={x/a,y/a};
		//display(arr);
		return arr;
	}
    
	static void display(int[][] arr){
		for(int i=0;i<arr.length;i++){
			for(int j=0;j<arr[i].length;j++){
				System.out.print(arr[i][j]+" ");
			}
			System.out.println();
		}
		System.out.println();
	}
 
	 static void display(String[] arr){
			for(int i=0;i<arr.length;i++){
				System.out.println(arr[i]+" ");
			}	
		//	System.out.println();
		
	 }
	 static void display(int[] arr){
			for(int i=0;i<arr.length;i++){
			   System.out.print(arr[i]+" ");
			}	
			System.out.println();
		  }
	 static void display(double[] arr){
		// System.out.println();
			for(int i=0;i<arr.length;i++){
				System.out.println(arr[i]+" ");
			}	
//			System.out.println();
		
		  }
	 static String str(char[] carr){
		 String str="";
		 for(int i=0;i<carr.length;i++){
			    str=str+carr[i];
			}
		 return str;
	 }
	 
	}
class Count{
	int i;
	ArrayList<Integer> list=new ArrayList<>();
	Count(int i,int c){
		this.i=i;
		list.add(c);
	}
	Count(int i){
		this.i=i;
	}
	void display(){
		System.out.println(i+" "+list);
	}
}