Problem: A permutation p is an ordered group of numbers p1, p2, ..., pn, consisting of n distinct positive integers, each is no more than n. We'll define number n as the length of permutation p1, p2, ..., pn.

Simon has a positive integer n and a non-negative integer k, such that 2k ≤ n. Help him find permutation a of length 2n, such that it meets this equation: <image>.

Input

The first line contains two integers n and k (1 ≤ n ≤ 50000, 0 ≤ 2k ≤ n).

Output

Print 2n integers a1, a2, ..., a2n — the required permutation a. It is guaranteed that the solution exists. If there are multiple solutions, you can print any of them.

Examples

Input

1 0


Output

1 2

Input

2 1


Output

3 2 1 4


Input

4 0


Output

2 7 4 6 1 3 5 8

Note

Record |x| represents the absolute value of number x. 

In the first sample |1 - 2| - |1 - 2| = 0.

In the second sample |3 - 2| + |1 - 4| - |3 - 2 + 1 - 4| = 1 + 3 - 2 = 2.

In the third sample |2 - 7| + |4 - 6| + |1 - 3| + |5 - 8| - |2 - 7 + 4 - 6 + 1 - 3 + 5 - 8| = 12 - 12 = 0.

Solution (in JAVA):

Solution:

import java.io.*;
import java.util.*;
public class Template {
	//static int cnt=0;
static Scanner sc=new Scanner(System.in);
	static ArrayList<Integer> v=new ArrayList();;
	static int max=0;
	static String f3="";
	//static long n=0;
	static BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
	
	public static void main (String[] args) throws java.lang.Exception{
int n=sc.nextInt();
int k=sc.nextInt();

for(int i=2*n;i>2*k;i--) {
	System.out.print(i+" ");
}
for(int i=1;i<=2*k;i++)
	System.out.print(i+" ");

	}
	
public static long reduceFraction(long a,long b) {
	if(a==0)
		return 1;
	long ia=a;
	for(int i=2;i<=Math.min(a, b);i++) {
		if(a%i==0 && b%i==0) {
			a=a/i;
			b=b/i;
			i=i-1;
		}
	}
	
	return ia/a;
	
}
	
	
	
	public static long sumDigits(long x) {
		String s=String.valueOf(x);
		//System.out.println(s+" "+sx+" "+x);
		long sum=0;
		for(int i=0;i<s.length();i++) {
			sum+=Long.parseLong(s.substring(i,i+1));
		}
		return sum;
	}
	
	
	
		double nCr(long n, long r){ 
		if(n<r) {
			return 0;
		}
		long rfact=1, nfact=1, nrfact=1,temp1 = n-r ,temp2 = r; 
		if(r>n-r) 
		{ 
			temp1 =r; 
			temp2 =n-r; 
		} 
		for(long i=1;i<=n;i++) 
		{ 
			if(i<=temp2) 
			{ 
				rfact *= i; 
				nrfact *= i; 
			} 
			else if(i<=temp1) 
			{ 
				nrfact *= i; 
			} 
			nfact *= i; 
		} 
		return nfact/(double)(rfact*nrfact); 
	}
		
	
		
	

	
	
	

		
	
	
	
	
static long gcd(long a,long b) {
		
	
		if(b==0) {
		return a;
		}
			
		
	return gcd(b,a%b);
	
	}
	
	
	
	
	
	public static int s2i(String s) {
		return Integer.parseInt(s);
	}
	

	
	
	public static int LeastIntFn(int a,int b) {
		if((b%a)==0) {
			return (int)b/a;
		}
		return (int)(b/a)+1;
	}
	
	
	
	public static ArrayList<Long> arrInpLong(int n){
		ArrayList<Long> arr=new ArrayList();
		for(int i=0;i<n;i++) {
		arr.add(sc.nextLong());	
		}
		return arr;
	}
	public static ArrayList<String> arrInpStr(int n){
		ArrayList<String> arr=new ArrayList();
		for(int i=0;i<n;i++) {
					arr.add(sc.nextLine());	
		}
		return arr;
	}
	
	public static ArrayList<Integer> arrInpInt(int n){
		ArrayList<Integer> arr=new ArrayList();
		for(int i=0;i<n;i++) {
			int k=sc.nextInt();
			if(k>max)
				max=k;
		arr.add(k);	
		}
		return arr;
	}
	
	
	public static void printArrInt(ArrayList<Integer> arr) {
		for(int i=0;i<arr.size();i++) {
			System.out.print(arr.get(i)+" ");
	}	
		}
	
	
	public static int min(int a,int b,int c) {
		int min1=Math.min(a, b);
		return Math.min(min1,c);
	}
}