#P1037. A decorative fence

A decorative fence

描述

理查德刚刚建好他的新房子。现在这所房子唯一缺少的就是一个可爱的小木质栅栏。他不知道如何制作木质栅栏,所以决定订购一个。不知怎么的,他弄到了《ACME 栅栏目录 2002》,这可是关于可爱小木质栅栏的终极资料。读完前言后,他就知道了什么样的小木质栅栏才可爱。

一个木质栅栏由 $N$ 块木板垂直并排组成。当且仅当满足以下条件时,这个栅栏才显得可爱:

- 这些木板长度各不相同,分别为 1, 2, …, $N$ 个木板长度单位。

- 每块有两个相邻木板的木板,要么比它的两个相邻木板都长,要么比它的两个相邻木板都短。(这意味着栅栏的顶部会交替地起伏。)

由此可知,我们可以用数字 1, …, $N$ 的一个排列 $a_1, \cdots, a_N$ 来唯一描述每一个有 $N$ 块木板的可爱栅栏,使得(对于任意的 $i$,$1 < i 0$;反之,每一个这样的排列也都描述了一个可爱的栅栏。

显然,由 $N$ 块木板组成的可爱木质栅栏有很多种。为了给他们的目录整理出一些顺序,ACME 的销售经理决定按以下方式对它们进行排序:栅栏 A(用排列 $a_1, \cdots, a_N$ 表示)在目录中排在栅栏 B(用排列 $b_1, \cdots, b_N$ 表示)之前,当且仅当存在这样的 $i$,使得(对于任意的 $j < i$)$a_j = b_j$ 且 $a_i < b_i$。(同样,要确定两个栅栏在目录中哪个更靠前,就取它们对应的排列,找出它们第一个不同的位置,然后比较该位置上的值。)所有有 $N$ 块木板的可爱栅栏都按照它们在目录中出现的顺序编号(从 1 开始)。这个编号就称为它们的目录编号。

在仔细研究了所有可爱的小木质栅栏后,理查德决定订购其中一些。对于每一个栅栏,他都记下了木板的数量和它的目录编号。后来,当他见到朋友们时,他想给他们看看他订购的栅栏,但他把目录弄丢了。他现在仅有的就是他的笔记。请帮他弄清楚他订购的栅栏会是什么样子。

输入

输入文件的第一行包含输入数据集的数量 $K$($1 \leq K \leq 100$)。接下来有 $K$ 行,每行描述一个输入数据集。

接下来的 $K$ 行中,每行包含两个整数 $N$ 和 $C$($1 \leq N \leq 20$),用一个空格分隔。$N$ 是栅栏中木板的数量,$C$ 是栅栏的目录编号。

你可以假设,由 20 块木板组成的可爱小木质栅栏的总数可以用一个 64 位有符号整数变量(在 C/C++ 中为 long long,在 FreePascal 中为 int64)来表示。你也可以假设输入是正确的,特别是 $C$ 至少为 1,并且不超过有 $N$ 块木板的可爱栅栏的数量。

输出

对于每个输入数据集,输出一行,描述目录中第 $C$ 个有 $N$ 块木板的栅栏。更准确地说,如果这个栅栏由排列 $a_1, \cdots, a_N$ 描述,那么输出文件的相应行应该包含 $a_i$(按正确顺序),并用单个空格分隔。

2
2 1
3 3
1 2
2 3 1

来源

2002 年中欧信息学奥林匹克竞赛(CEOI 2002)