游游的排列构造
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
Special Judge, 64bit IO Format: %lld

题目描述

\hspace{15pt}游游称排列中的一个元素为好元素,当且仅当它是当前前缀的最大值。形式化地,设排列为 \{a_1,a_2,\dots,a_n\},若某个下标 i 满足 a_i = \max \{a_1,a_2,\dots,a_i\},则 a_i 为好元素。游游希望你构造一个长度为 n 的排列,使得恰有 k 个好元素,且任意两个好元素在排列中不相邻。

\hspace{15pt}排列:长度为 n排列是由 1 \sim nn 个整数按任意顺序组成的数组,其中每个整数恰好出现一次。

输入描述:

\hspace{15pt}在一行上输入两个整数 n,k \left(1 \leqq n \leqq 10^5;\ 1 \leqq k \leqq \left\lceil \tfrac{n}{2} \right\rceil \right),分别表示排列的长度与期望的好元素数量。

输出描述:

\hspace{15pt}在一行上输出 n 个整数 p_1,p_2,\dots,p_n,用空格分隔,表示你构造的排列。若存在多种可行解,输出任意一种即可。
示例1

输入

复制
5 2

输出

复制
3 1 5 2 4

说明

\hspace{15pt}在该样例中:
\hspace{23pt}\bullet\,前缀 \{3\} 的最大值为 3,因此第 1 个元素为好元素;
\hspace{23pt}\bullet\,前缀 \{3,1,5\} 的最大值为 5,因此第 3 个元素为好元素;
\hspace{23pt}\bullet\,其余前缀的最大值均不在对应位置产生新的好元素;
\hspace{15pt}最终共有 k=2 个好元素,且它们不相邻,满足要求。
示例2

输入

复制
5 3

输出

复制
2 1 4 3 5