你的朋友最近正在上算法与数据结构课。就在上周,他学习了二叉搜索树,以及使用自平衡树来保持树的高度较低并保证对每个节点的快速访问的重要性。
回想一下,二叉搜索树是一种二叉树,每个节点存储一个键值,且满足以下性质:每个节点的键值大于其左子树中所有节点的键值,且小于其右子树中所有节点的键值。向树中插入新键值时,通过在唯一能保持上述性质的位置添加一个新的叶子节点来实现,如下图所示。
图 I.1:第一个样例的说明。
为了向他展示在没有自平衡的情况下情况会变得多么糟糕,你想向他证明,通过仔细选择插入顺序,可以构建出几乎任意高度的树。
给定两个整数 $n$ 和 $k$,你想要构建一棵包含 $n$ 个节点且高度为 $k$ 的二叉搜索树(树的高度定义为从根节点到叶子节点路径上的最大节点数)。为此,你需要找到一个 $1$ 到 $n$ 的排列,使得当按照该顺序将这些整数插入到一棵空的二叉搜索树中时(不进行自平衡),生成的树高度恰好为 $k$。
输入格式
输入包含两个整数 $n$ 和 $k$ ($1 \le k \le n \le 2 \cdot 10^5$),其中 $n$ 是树中的节点数,$k$ 是树应具有的精确高度。
输出格式
如果没有解,输出 impossible。否则,输出一行包含 $n$ 个整数,即所求的排列。如果存在多个解,输出其中任意一个即可。
样例
样例输入 1
7 4
样例输出 1
3 6 7 1 4 2 5
样例输入 2
8 3
样例输出 2
impossible