Permutation p is an ordered set of integers p1, p2, ..., pn, consisting of n distinct positive integers not larger than n. We'll denote as n the length of permutation p1, p2, ..., pn.

Your task is to find such permutation p of length n, that the group of numbers |p1 - p2|, |p2 - p3|, ..., |pn - 1 - pn| has exactly k distinct elements.

Input

The single line of the input contains two space-separated positive integers n, k (1 ≤ k < n ≤ 105).

Output

Print n integers forming the permutation. If there are multiple answers, print any of them.

Examples

Input

3 2


Output

1 3 2


Input

3 1


Output

1 2 3


Input

5 2


Output

1 3 2 4 5

Note

By |x| we denote the absolute value of number x. 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.util.Arrays;
import java.util.StringTokenizer;
import java.util.TreeSet;

public class Main {
	final int MAX = 5001;
	final static int MOD = 1000000007;


	 public static void main(String[] args) throws IOException {
	 br = new BufferedReader(new InputStreamReader(System.in));
	 out = new PrintWriter(System.out);
	 sc = new StringTokenizer("");
	 int n , k ;
	 TreeSet<Integer> S = new TreeSet<Integer>();
	 S.add(1);
	 
	 n = nxtInt();
	 int n1=n;
	 k=nxtInt();
	 out.print(1 + " ");
	 int cur =1;
	 n--;
	 while(k>0 && n>0)
	 {
		 if(cur-k>0 && S.contains(cur-k)==false)
		 {
			 out.print(cur-k + " ");
			 S.add(cur-k);
			 cur=cur-k;
		 }
		 else
		 {
			 out.print(cur+k + " ");
			 S.add(cur+k);
			 cur=cur+k;	 
		 }
		 n--;
		 k--;
		
	 }
	 for(int i = 1 ; i<=n1;i++)
	 {
		 if(S.contains(i)==false)
			 out.print(i+ " ");
	 }
		 
	 br.close();
	 out.close();
	 }


	private static int NumberOfInversions(String str) {
		// TODO Auto-generated method stub
		int res = 0;

		for (int i = 1; i < str.length(); i++)
			for (int j = i - 1; j >= 0; j--)
				if (str.charAt(j) > str.charAt(i))
					res++;

		return res;
	}

	static String nxtTok() throws IOException {
		while (!sc.hasMoreTokens()) {
			String s = br.readLine();
			if (s == null)
				return null;
			sc = new StringTokenizer(s.trim());
		}
		return sc.nextToken();
	}

	static BufferedReader br;
	static StringTokenizer sc;
	static PrintWriter out;

	static int nxtInt() throws IOException {
		return Integer.parseInt(nxtTok());
	}

	static long nxtLng() throws IOException {
		return Long.parseLong(nxtTok());
	}

	static double nxtDbl() throws IOException {
		return Double.parseDouble(nxtTok());
	}

	static int[] nxtIntArr(int n) throws IOException {
		int[] a = new int[n];
		for (int i = 0; i < n; i++)
			a[i] = nxtInt();
		return a;
	}

	static long[] nxtLngArr(int n) throws IOException {
		long[] a = new long[n];
		for (int i = 0; i < n; i++)
			a[i] = nxtLng();
		return a;
	}

	static char[] nxtCharArr() throws IOException {
		return nxtTok().toCharArray();
	}

}