定义函数 $$$f(x)$$$,表示序列 $$$x$$$ 中不同元素的种类数。例如:
进一步地,我们定义函数 $$$g(y)$$$,表示序列 $$$y$$$ 所有非空子序列 $$$x$$$ 对应的 $$$f(x)$$$ 之和,即: $$$$$$ g(y) = \sum_{x \subseteq y, x \neq \emptyset} f(x) $$$$$$ 换句话说,$$$g(y)$$$ 计算了 $$$y$$$ 的所有非空子序列中不同元素种类数的总和。
一个序列的子序列,指的是从原序列中删除零个或多个元素后,其余元素保持原有相对顺序不变得到的序列。
现在,给定一个正整数 $$$x$$$,你的任务是构造一个序列 $$$a$$$,使得 $$$g(a) = x$$$,或报告这样的序列不存在。
输入包含一个正整数 $$$x$$$($$$1 \le x \le 10^{18}$$$)。
如果不存在满足条件的序列,输出一行 No。
否则,第一行输出 Yes,第二行输出一个整数 $$$n$$$ 表示序列长度,第三行输出 $$$n$$$ 个正整数 $$$a_1, a_2, \ldots, a_n$$$ 表示这个序列。
要求 $$$1 \le n \le 10^5$$$,$$$1 \le a_i \le n$$$。可以证明如果有解,必然存在满足限制的解。
1
Yes 1 1
4
Yes 2 2 1
10
Yes 3 3 1 3
| Name |
|---|


