#6629. 稳定结点(3.1)

稳定结点(3.1)

题目:稳定结点

题目描述

在一个编号系统中,每个正整数都有一个“最小波动值”。

对于一个正整数 (x),它的最小波动值定义为:

所有能够整除 (x) 的 (2) 的非负整数次幂中,最大的那个数。

例如:

  • (12) 能被 (1,2,4) 整除,但不能被 (8) 整除,所以 (12) 的最小波动值是 (4);
  • (10) 能被 (1,2) 整除,但不能被 (4) 整除,所以 (10) 的最小波动值是 (2);
  • (7) 只能被 (1) 整除,所以 (7) 的最小波动值是 (1)。

现在给定一个正整数 (n),系统会进行若干次调整。

每次调整时,若当前编号为 (x),则系统会将编号变为:

xdx - d

其中 (d) 是当前编号 (x) 的最小波动值。

当编号变为 (0) 时,调整结束。

请你输出整个调整过程中出现过的所有编号,并按从小到大的顺序输出。


输入格式

输入一个正整数 (n)。


输出格式

输出若干个整数,表示整个调整过程中出现过的所有编号。

要求按从小到大的顺序输出,相邻两个整数之间用一个空格隔开。


输入样例 1

12

输出样例 1

0 8 12

样例解释 1

初始编号为 (12)。

(12) 的最小波动值为 (4),所以:

12812 \rightarrow 8

(8) 的最小波动值为 (8),所以:

808 \rightarrow 0

过程中出现过的编号为:

12,8,012,8,0

按从小到大排序后输出:

0 8 12

输入样例 2

15

输出样例 2

0 8 12 14 15

样例解释 2

调整过程为:

$15 \rightarrow 14 \rightarrow 12 \rightarrow 8 \rightarrow 0$

过程中出现过的编号按从小到大排序后为:

0,8,12,14,150,8,12,14,15


输入样例 3

10

输出样例 3

0 8 10

数据范围

1n1061 \le n \le 10^6


说明

输出结果末尾是否带有空格不影响答案正确性。