E:体育课
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

这是一个神奇的一天,"体弱多病" 的体育老师终于不请假了,一班的同学们迎来了难得的体育课。

一班总共有 n 个学生,学生编号为 1,2,\dots,n。体育老师要和同学们玩一个数字游戏,用来展示自己的数学能力。他让这些同学们站成一排,顺序任意。形式化地说,这些学生站在一起构成了一个 1\sim n 的排列。

体育老师会将学生编号组成的序列,相邻两项相加,组成一个新序列,显然,这个新序列会比原来的序列少 1 个数。然后,体育老师会重复这个操作,每一次都将序列相邻两个数相加,组成一个新的序列,直到这个序列只剩下一个数,与这个数字等额的金钱将作为这些学生的奖金。

例如,下面就是 5 个学生排队后序列的变化情况,最后会得到 53 这个数字。

体育老师觉得这样太没有挑战性了,展示不出自己的数学水平,于是他决定将这个游戏的玩法倒过来。在知道 n 和最后的数字 sum 的情况下,推出原来的 n 个学生的位情况。如果答案有多种可能,则输出将这 n 个数排序后最小的可能。

- 这里的最小,指的是 \{1,2,3,4,5,6,7,8,9,10,11\} 这种顺序,把每个数当成一位后的字典序最小。

输入描述:

输入一行两个整数 n,sum,含义如题面描述。

输出描述:

输出一行,表示原来学生的位置情况。
示例1

输入

复制
5 53

输出

复制
2 1 4 5 3

说明

这组样例就是题目描述中的例子,通过枚举所有排列的可能,可以得到 2,1,4,5,3 就是原始学生的位置情况,并且这种方案就是排序后最小的可能。

备注:

对于 40\% 的数据,n\le7

对于 80\% 的数据,n\le 10

对于 100\% 的数据,n \le 12,sum \le 12345,且保证一定有解。